c语言内存分配函数

来源:互联网 发布:淘宝拍照识别搜索失败 编辑:程序博客网 时间:2024/06/15 01:51

三个函数的声明分别是: 
void* realloc(void* ptr, unsigned newsize); 
void* malloc(unsigned size); 
void* calloc(size_t nelem, size_t elsize); 
都在stdlib.h函数库内

原型:extern void *realloc(void *mem_address, unsigned int newsize);

用法:#include <alloc.h> 
功能:改变mem_address所指内存区域的大小为newsize长度。

说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 
        当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *malloc(unsigned int num_bytes); 
用法:#include <alloc.h>

功能:分配长度为num_bytes字节的内存块

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 
        当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *calloc(int num_elems, int elem_size); 
用法:#include <alloc.h> 
功能:为具有num_elems个长度为elem_size元素的数组分配内存 
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 
        当内存不再使用时,应使用free()函数将内存块释放。

区别:

1、calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据

2、realloc是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度

0 0