动态内存分配
malloc
1.需要引入头文件
#include <stdlib.h>
2.它的原型参数是size_t,返回的类型是void *
void * malloc(size_t size);
free()
- 把申请得来的空间还给“系统”
- 申请过的空间,最终都是要换的
- 只能还申请来的空间的首地址
- 释放的不是申请来的空间的首地址(p已发生变化)
- 释放的空间不是malloc得来的
写指针的好习惯:一旦定义就初始化为0
因为:可能会忘记malloc或者malloc失败,这样free(0)就不会出错
- free(NULL)可以
所以为了配合好习惯,free()就不会出错
void *p = 0;
free(p);
没空间了
- 如果申请失败则返回0, 或者叫做NULL
- 系统能给你多大的空间
常见问题
- 申请了没free->长时间运行内存逐渐下降
- 新手:忘了
- 老手:找不到合适的free时机
- free过了再free
- 地址变过了,还去free