现在的位置: 首页 > 综合 > 正文

全局、静态、局部变量的内存分配

2013年01月02日 ⁄ 综合 ⁄ 共 574字 ⁄ 字号 评论关闭

在标准的C,变量大概可以分为全局变量(extern修饰),静态变量(static修饰),局部变量三中类型.

     在内存中用于存储变量的空间也可以分为堆区、栈区、全局区(静态区)。其中堆区:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,一般存放malloc()函数申请请的变量空间;栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等;全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

      验证:静态变量与全局变量都存放在同一片区域当中

#include<iostream.h>

/* 全局变量 */

extern int iTx = 1;

void main()

{

       /* 静态变量 */

       static int iSTx = 2;

       /* 局部变量 */

       int ijx = 3;

       cout<< &iTx <<endl;

       cout<< &iSTx <<endl;

       cout<< &ijx <<endl;

}

输出的结果:

0x0042AD50

0x0042AD54

0x0012FF7C

从这里可以看出iSTxiTx是存放在同一片连续的内存空间当中,相差4个单元长度。其他存储区的验证方法以之相识。

   

抱歉!评论已关闭.