malloc:
格式: void * malloc(unsigned size);
说明:从内存的堆区分配大小为size个字节的连续的内存空间,如果内存分配成功 返回内存的首地址,失败则返回null,因此在分配内存的时候应该先判断是否分配成功,然后再使用这段内存
使用:
//从内存中申请一块内存空间,可以存储4个整数
// = 赋值,要求等号的左右两侧的类型要一致
//注意:malloc 申请的内存空间,如果我们不赋值是垃圾数
int *p = (int *)malloc(4*sizeof(int)); //16个字节
//使用一个函数给malloc申请的空间进行初始化
memset(p,'a',16);
calloc:
//callloc 分配指定块数和长度的内存空间
//格式:calloc(块数,长度)
//分配了4块,每一块内存长度为4的内存空间
//他们的地址也是连续的
//注意事项: calloc 它使可以帮我们自动的初始化为0
int *p = (int *)calloc(4, sizeof(int)); //16个字节
realloc:
用途:函数可以给已经存在的空间扩充大小
注意:使用realloc函数返回的是新申请的内存空间的首地址,必须将该地址重新赋值给指针变量才可
使用新分配的内存空间
用法:
int *p = (int *)malloc(4*sizeof(int)); //16个字节
//realloc 函数可以给已经存在的空间扩充大小
p = realloc(p, 40*sizeof(int));
free函数:
用途:释放动态内存分配函数分配的内存空间,不然会造成内存泄露
用法:
int *p = (int *)malloc(4*sizeof(int)); //16个字节
//当不再使用动态分配的内存空间时,应该使用free()函数释放内存空间
free(p);
//free(p)以后,p是一个野指针,需要将其指向置为空
p = NULL;
|
|