相关疑难解决方法(0)

malloc和calloc之间的区别?

做的有什么区别:

ptr = (char **) malloc (MAXELEMS * sizeof(char *));
Run Code Online (Sandbox Code Playgroud)

要么:

ptr = (char **) calloc (MAXELEMS, sizeof(char*));
Run Code Online (Sandbox Code Playgroud)

什么时候使用calloc而不是malloc是一个好主意,反之亦然?

c malloc calloc

743
推荐指数
13
解决办法
51万
查看次数

calloc的两个参数

为什么要calloc采用两个参数而不是一个malloc

具体来说,由于以下表达式之间没有区别(或存在?):

calloc (a, b);
calloc (b, a);
calloc (a * b, 1);
calloc (1, a * b);
Run Code Online (Sandbox Code Playgroud)

为什么不接受要分配的总字节数?这个界面背后的理由是什么?为什么这不适用于malloc?

c calloc

27
推荐指数
3
解决办法
1万
查看次数

malloc和calloc是如何以不同的签名结束的?

可能重复:
为什么calloc接受两个参数而malloc只有一个?

很多资源描述了malloc和之间的功能差异calloc,但我不能轻易找到描述不同功能签名背后的历史的资源:

   void *calloc(size_t nmemb, size_t size);
   void *malloc(size_t size);
Run Code Online (Sandbox Code Playgroud)

当然,size前者是每个成员的大小.也许这个想法是可以通过操作系统懒散地完成多页面大小的成员大小的calloc?

(我可以弥补原因以及下一个人 - 没有引用来源没有接受的答案.:-)

c history std libc

20
推荐指数
1
解决办法
2554
查看次数

在C函数中需要"nmem"和"size"参数需要什么?

可能重复:
c malloc和calloc之间的区别
为什么calloc需要两个参数而malloc只需要一个?

我注意到这有很多C函数调用,特别是处理内存或文件操作的函数,但并非所有函数都使用这两个参数.例如,malloc传递一个参数,即所需内存空间的大小(以字节为单位).另一方面,Calloc传递两个参数,一个元素的字节大小和元素的数量(大小和nmem).还有其他函数也使用这些大小和nmem参数.

从本质上讲,calloc调用将分配与调用malloc(nmem size)相同的内存量,因此所有真正发生的事情是asterisk()被替换为逗号(,).至少这是我能从更高层面告诉我的工作.我没有看到调用calloc(1,nmem size),calloc(nmem size,1)或calloc(nmem,size)的区别.

是否有一些实际发生在较低级别的事情使调用calloc(1,nmem*size)与calloc(nmem,size)根本不同?

编辑:我知道calloc和malloc之间的功能差异.我很感兴趣为什么参数有差异.还有其他函数使用2个大小参数作为总大小(fread,fwrite等).我并不关心具体的功能,而是为什么函数中使用的总大小有两个参数,而基本上总大小变成两个参数相乘.我发现大多数时候使用这些函数时,我使用"size"参数中需要的大小,"nmem"(有时是"count"等)参数使用"1".

c linux memory parameters

8
推荐指数
1
解决办法
425
查看次数

标签 统计

c ×4

calloc ×2

history ×1

libc ×1

linux ×1

malloc ×1

memory ×1

parameters ×1

std ×1