内存分区模型
- 代码区:存放函数二进制代码,由OS管理。
特点:共享、只读 - 全局区:存放全局变量、静态变量及常量。
- 堆区:程序员分配和释放,若程序员没释放,则OS在程序结束后释放。指针本质也是局部变量,放在栈区,但指针保存的数据保存在堆区。
//利用new创建的数据,返回该数据对应的类型的指针
int* func()
{
int* a = new int[10];
return a;
}
- 栈区:编译器自动分配释放,存放函数的参数值、局部变量(局部常量)等。 注意:不要返回局部变量的地址
int global_a = 3; //全局变量 全局区
const int global_b = 4; //全局常量 全局区
int main()
{
int a = 5; //普通局部变量 栈区
static int b = 5; //静态变量 全局区
const int c = 8; //局部常量 栈区
}
内存四区意义
赋予程序不同的生命周期,灵活编程