锻炼精神,首先要锻炼肉体
全部博文(104)
分类: C/C++
2015-03-31 20:28:48
当我们将一个.cpp 源代码编译并运行之后,系统为其分配相应的空间存放数据,
所存放的数据可以分为三类
1.文本段 ;2.数据段 ;3.堆栈段
文本段:
文本段是用来存放 .cpp 等进程运行的源代码文件的,以及程序中所定义的常量;
通常情况下,文本段中存放的数据类型都是只读属性的。
数据段:
数据段便是我们常常谈到的静态存储空间,它是用来存放程序中的静态变量
和全局变量的,静态存储空间(数据段)中的变量在程序进程运行之前是会被初始化的。
就是在程序中定义一个静态变量/全局变量 (static) int x ; 变量 x 在进程运行之前会被
初始化为数值 0 ,或是根操作系统有关的统一初始化为一个特定数值。
静态存储空间中的数据在进程开始运行到进程消亡始终存在,在进程结束之后该空间会
有系统自动收回并释放。
堆栈段:
堆栈段是用来存放函数体和局部变量的空间的,其中通过动态分配空间函数new, malloc 等….
动态分配的空间存放在堆空间中,动态分配的空间必须要通过手动调用指定函数将申请的空间进行回收与释放,
不然很容易造成内存泄露; 而函数和普通的局部变量是存放到栈空间中的,当局部变量超出定义的作用域之后,
该变量占用的栈空间将会被系统自动的回收。
这个地方一直不太清楚,今天仔细分析记录一下