最近学习c++看视频时,老师时常提到栈区堆区,搞不清楚,只能泪目,毕竟爱过。。。因此,接下来对此做些整理,方便回顾。(老师说:这个简化模型仅用于初学者示意,与实际模型并不完全一致)
1.stack(栈)
编译器自动分配释放
2.Heap(堆)
一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3.Global/Static(全局区/静态区)
全局变量和静态变量的存储是放在一块的
可以简单认为:
程序启动全局/静态变量就在此处
程序结束释放
4.Constant(常量区)
可以简单理解为所有常量都放在一起
该区域内容不可修改
堆向高地址方向生长 栈向地地址方向生长
Eg1.
int arr[3]; //全局区
int myFunc( int * pi)
{
int a;
char *p;
p = static_cast<char*> new char[8];
char* str = "hello world";
}
//pi a p str --->栈区
//char[8](new出来的) --->堆区
//"hello world"--->常量区
时间: 2024-10-27 02:30:20