C++内存的分区

C++内存的分区

  • 代码区:存放函数体的二进制代码,由系统进行管理

    存放CPU执行的二进制指令

    代码区是共享的,对于频繁二的执行的程序,只需要在内存中有一份代码即可

    代码区是只读的,防止程序意外的修改它的指令

  • 全局区:

    全局变量和静态变量存放在此;

    全局区还包括了常量区,字符串常量,和其他常量也存放在此

    全局区的数据在程序结束后由系统释放

C++中在程序前分全局区和代码区

  • 栈区:

    由编译器自动分配和 释放,存放函数的参数数值,局部变量等

    注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

  • 堆区:

    由程序员分配释放,若程序员不释放,没程序结束时由系统回收

    在C++中主要利用new在堆区开辟内存

    函数不可以回指向栈区的指针,但是可以返回指向堆区的指针

int *func()
{
 int *a= new int(10);//new 返回new出来的地址
 return a;
}
int main()
{
  int *p = func();
  cout<<*p<

你可能感兴趣的:(C++,c++,开发语言)