C++内存空间

1. C++内存空间

C++内存空间_第1张图片
C++内存空间基本示意

代码段和数据段之间有明确的分隔.
但数据段和堆栈段之间没有,而且栈是向下增长,堆是向上增长的.

目标文件是什么样的

摘自《程序员的自我修养》俞甲子等著

2. 基本介绍

  • 代码段(Code Segment/Text Segment)

存放执行代码.
这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读.

  • 数据段(Data Segment)

存放全局变量和静态变量.

  • 堆区(Heap)

需要程序员手动申请和释放. 比如new和delete.

  • 栈区(Stack)

存放函数参数和局部变量.
系统来负责申请和释放.

3. 结合C++类进行理解

  • 类的函数实现存放在代码区.
  • 建立对象
    1. 建立在栈上
      A a;
    2. 建立在堆上
      A* a=new A();

References
http://blog.sina.com.cn/s/blog_821c73630100x40d.html
http://www.cnblogs.com/bluestorm/archive/2012/08/29/2662109.html

你可能感兴趣的:(C++内存空间)