malloc和calloc分别调用什么参数?具体点

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:37:08

void *malloc(unsigned int num_bytes);
功能:分配长度为num_bytes字节的内存块

malloc()
-------------------------------------------
malloc()函数用来分配内存:将总共需要的字节数作为参数传递给该函数,返回值是指向最新分配的内存的指针,而如果内存没有分配好,则返回值是NULL。
malloc()的使用技术:
some_type *pointer;
pointer = malloc(count * sizeof(*pointer));

注:
(1) 这个方法保证malloc()会分配正确数量的内存,而不用考虑pointer的生命。如果pointer的类型后来变了,sizeof算子自动确保要分配的字节数仍然正确。
(2) malloc()返回的内存是“没有“初始化的。这块内存可能包含任何随机的垃圾,你可以马上用有效数据或者至少是用零来初始化这块内存。要用0初始化,可以用
void *memset(void *s, int c, size_t n);
(3) malloc()最终通过缺页异常获取的物理内存中的原有数据,大多数情况下是0(但不能保证一定是0)

void *calloc(size_t nelem, size_t elsize);
功 能: 分配主存储器,分配内存的大小为nelem*elsize,并将其初始化

calloc()
-------------------------
calloc()函数是malloc的简单包装。它的主要优点是把动态分配的内存清零。
void *calloc(size_t nmemb, size_t size);
用经验的程序员更喜欢使用calloc(),因为这样的话新分配内存的内容就不会有什么问题,调用calloc()肯定会清0,并且可以避免调用memset().