1、栈
申请方式 : 使用类型和标识符直接定义申请
栈中内存 : 动态存储区 - 局部变量(生命周期 : 从复合语句内部定义开始, 到复合语句定义结束)
静态存储区 - 静态局部变量/全局变量(生命周期 : 从程序运行开始, 到程序运行结束)
1.内存是连续的
2.内存的生命周期固定
3.内存的申请由用户完成, 内存释放的行为由系统完成(自动释放)
2、堆
申请方式 : 使用函数malloc进行申请
栈中内存 :
1.内存是不连续的
2.内存的生命周期不固定, 何时开始, 何时结束, 完全由用户决定
3.内存的申请和释放均由用户完成
void *malloc(size_t size);//申请 size 个字节的动态内存,并返回这段内存的首地址
void free(void *ptr);//释放 ptr 指向的动态内存
void *calloc(size_t nmemb, size_t size);
//申请 size * nmemb 个字节的动态内存, 并返回这段内存的首地址
void *realloc(void *ptr, size_t size);
//将 ptr 指向的动态内存大小修改为 size 个字节, 并返回调整后的内存地址