内存分区模型
代码区:存放函数体的二进制代码,CPU执行的机器指令。共享,只读
全局区:存放全局变量、静态变量(static) ,程序结束后由操作系统释放
常量区:存放字符串常量、const修饰的全局常量
栈区:编译器自动分配,用来存放函数参数值、局部变量、const修饰的局部常量等
堆区:由程序员申请和释放,若程序员没有释放,则程序结束由操作系统自动回收。C语言中用malloc()和free()实现;C++中用new和delete实现
分区意义:不同区域存放的数据,赋予不同的生命周期,灵活编程
#include<stdio.h>
#include<string.h>
int a = 0; //全局初始化区
char *p1;// 全局未初始化区
int main()
{
int b; //栈
char s[] = "abc";// 栈
char *p2;// 栈
char *p3 = "12345