动态内存管理
动态内存函数
malloc和free
标准用法:
int* ptr = (int*)void* malloc (size_t size);//申请size个字节的动态内存空间
if(NULL != ptr){
...
}
void free (void* ptr);//释放空间
ptr = NULL;
开辟的空间两种回收方式:
- 主动free
- 程序结束
calloc
void* calloc (size_t num, size_t size);
- 函数的功能是为
num
个大小为size
的元素开辟一块空间,并且把空间的每个字节初始化为0 - 与函数
malloc
的区别只在于calloc
会在返回地址之前把申请的空间的每个字节初始化为全0
realloc
void* realloc (void* ptr, size_t size);
ptr
是要调整的内存地址size
调整之后新大小- 返回值为调整之后的内存起始位置
tip:
一个常见错误-------返回栈空间地址问题
C/C++程序的内存开辟