zoukankan      html  css  js  c++  java
  • C++-内存四区

    c++程序在执行时,将内存大方向划分为4个区域

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

          存放CPU执行的机器指令

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

          代码区是只读的,使其只读的原因是防止程序意外的修改了它的意义,

      2.全局区:存放全局变量,静态变量和全局常量(局部常量在栈中) 

          该区域的数据在程序结束后由操作系统是否

      3.栈区:由编译器自动分配释放,存放函数的参数值,局部变量等。

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

          

    cout << *p << endl;//编译器第一次保留
    cout << *p << endl;//得到不正确的数据
    
    int* tp()
    {
    	int a = 10;
    	return &a;
    }
    

         结果

    10
    1504820192
    

      

      4.堆区:由程序员分配和释放,若程序员不释放,程序结束的时候由操作系统自动回收。

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

    内存四区意义:

      不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编译。

  • 相关阅读:
    MyBatis3.2从入门到精通第一章
    (转)浅析Java中的访问权限控制
    mysql添加索引命令
    (转)浅谈Java中的对象和对象引用
    (转)String、StringBuffer与StringBuilder之间区别
    (转)浅谈Java中的equals和==
    Java并发编程:Lock
    Java并发编程:synchronized
    安装MySQL
    Excel常用函数
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/14378130.html
Copyright © 2011-2022 走看看