gpt4 book ai didi

c - 围绕malloc的包装程序将起作用吗?

转载 作者:行者123 更新时间:2023-12-01 19:39:26 25 4
gpt4 key购买 nike

我正在尝试围绕malloc编写包装函数。这是我编写的代码,但是我不确定它是否可以工作。

有人可以看看它,让我知道它是否有效吗?

int main()
{
int i=1;
char *k;
while(i<3)
{
i++;
k = (char *) CountMalloc(1024);
printf(" Total mem : %d \n Memory Address:%x \n",Totalmem,k);
}

printf(" Exiting\n");
return 0;
}

这是我要分配内存并尝试传递空值的函数
指针。我知道,如果我声明了一个指针,并且将其地址传递给函数并在函数调用 malloc中将地址分配给了传递的指针,则此方法有效。但我想知道以下代码是否有效:
void * CountMalloc( int size )
{
char *p;
Totalmem += size;
return ( malloc (size) );
}

最佳答案

一些注意事项:
malloc()的参数声明为size_t,因此sizeCountMalloc()参数也应该是size_t

您无需检查malloc()的结果即可查看分配是否成功。考虑改为这样做:

void * CountMalloc(size_t size)
{
void * allocation = malloc(size);
if (allocation) {
Totalmem += size;
}
return allocation;
}

但是,请注意,分配的内存总量可能会更高。大多数 malloc()实现分配的内存超出了您的请求,因此它们可以在分配返回的内存之前存储有关分配的一些信息。

否则,我看不到任何严重的问题会阻止代码发挥您预期的作用。

关于c - 围绕malloc的包装程序将起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24091036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com