C++内存的分区
-
代码区:存放函数体的二进制代码,由系统进行管理
存放CPU执行的二进制指令
代码区是共享的,对于频繁二的执行的程序,只需要在内存中有一份代码即可
代码区是只读的,防止程序意外的修改它的指令
-
全局区:
全局变量和静态变量存放在此;
全局区还包括了常量区,字符串常量,和其他常量也存放在此
全局区的数据在程序结束后由系统释放
C++中在程序前分全局区和代码区
-
栈区:
由编译器自动分配和 释放,存放函数的参数数值,局部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放
-
堆区:
由程序员分配释放,若程序员不释放,没程序结束时由系统回收
在C++中主要利用new在堆区开辟内存
函数不可以回指向栈区的指针,但是可以返回指向堆区的指针
int *func()
{
int *a= new int(10);//new 返回new出来的地址
return a;
}
int main()
{
int *p = func();
cout<<*p<<endl;
}