栈区 | 堆区 | 静态区 |
局部变量 局部数组 函数的形式参数 | 动态内存分配 | 全局变量 全局数组 静态变量 |
动态内存管理函数
malloc--申请空间
malloc申请的空间使用完需要用free函数释放,一般成对使用。
free ---释放空间
free 函数释放动态内存开辟的空间。
free(指针地址);--如果指针为NULL则函数不做任何做操作。
#include <stdlib.h>
//申请10个整形空间
int main()
{
//void* malloc(size_t size);
int *p = (int*)malloc(10*sizeof(int));
//释放空间
free(p)
//释放空间后销毁指针
p = NULL;
return 0;
}
calloc -- 申请空间
calloc 为 Num 个大小为 size 的元素申请空间,并且把每个元素初始化为0。
calloc与malloc的区别只在于calloc会在返回地址之后把申请的空间每个字节初始化成全0。
#include <stdlib.h>
//申请10个整形空间
int main()
{
//void* malloc(NUm, sizeof(数据类型));
int *p = (int*)calloc(10,sizeof(int));
//释放空间
free(p)
//释放空间后销毁指针
p = NULL;
return 0;
}