本人收集整理!感觉非常经典,,与众人阅之! 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack):由编译器自动分配释放 ,站的特点是空间小但被CPU访问的速度快,使用户存放程序中临时创建的变量.由于桟的后进后出的特点,所以桟特别方便用来保存和恢复调用现场.用于存储占用空间长度不变并且占用空间小的数据类型的内存段,而相同类型的数据占用的空间是等长的,其操作方式类似于数据结构中的栈。 2、堆区(heap):它大小并不固定,可动态扩张或缩减.用于存放数据长度可变或内存占用较大的数据, 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区:代码区用来存放可执行文件的操作指令,(即二进制代码)也就是可执行程序内存中的镜像.代码段需要防止运行时被非法修改,所以只允许读取操作.如程序中的函数就存储在这段内存。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char