内存管理
- 程序:经源码编译后的可执行文件。
- 进程:程序加载到内存后开始执行至执行结束的这样一段时间概念。
- 进程空间图
stack 栈存储 容量比较小经常造成溢出
heap 堆存储 无限大受实际内存的大小和内存是否连续性。
void *malloc(size_t_Size)
if(NULL == p) //常量不可以赋值
{}
一般用
void *memset(void *buffer,int ch,size_t count);
memset (arr,0,40); 初始化malloc;
申请堆内存空间并返回,所申请的空间,自动清零。
void *calloc(size_t nmemb,size_t size);
void *realloc(void *ptr,size_t size);
切记 realloc()只能扩容,不能缩小空间
realloc newPtr ptr 有可能相等,也有可能不相等,只使用realloc的返回指针。
堆内存的特点总结:
1、自申请,自释放
2、返回判空
free(p) p = NULL;
//记得将释放的指针置为NULL
3、配对使用