内存管理
程序结构
- 栈区
- 堆区
- 数据区
- 未初始化的全局,静态数据
- 初始化的全局,静态数据
- 代码区
内存分配方式
- 静态分配
- 代码区
- 数据区
- 动态分配
- 栈区:系统分配
- 堆区:程序员调用malloc系列函数分配
内存管理函数
malloc
void * malloc(size_t size);
malloc(配置内存空间)
表头文件:#include <stdlib.h>
函数参数:无符号整型数据
函数说明:malloc()在动态存储区分配size字节的连续空间
返回值:成功返回指向空间起始地址的指针,失败返回NULL
realloc
void *realloc(void *ptr, size_t size)
relloc(变更已经配置的内存空间)
当需要扩大一块内存空间时,realloc()试图直接从堆上当前内存段后面的字节中获得更多的内存空间.
- 如果能够满足,则返回原指针;
- 如果当前内存段后面的空闲字节不够,那么就使用堆上第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,而将原来的数据块释放掉。
参数ptr为先前由malloc、calloc和re