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)
calloc()函数是malloc的简单包装。它的主要优点是把动态分配的内存清零。
memset().
简而言之calloc() = malloc() + memset(),对于一个机构体的指针必须分配一块儿内存,不像结构体变量以及数组在定义时就分配了内存空间。