- 论坛徽章:
- 0
|
本帖最后由 zxb167 于 2013-04-24 13:11 编辑
争对你的问题做了一个实现,调试在一进入main函数的时候,就watch各个变量的地址,最终得到如下的效果(我用的是vs2010开发平台,其它的平台没有测试过):- #include <iostream>
- using namespace std;
- /*定义全局静态变量*/
- static int a;
- static int b=1;
- /*定义全局变量*/
- int e;
- int f = 1;
- void fun()
- {
- /*定义局部静态变量*/
- static int c;
- cout << "c: " << &c << endl;
- }
- void fun1()
- {
- /*定义局部静态变量*/
- static int d = 2;
- cout << "d: " << &d << endl;
- }
- void main()
- {
- cout << "a: " << &a << endl;
- cout << "b: " << &b << endl;
-
- fun();
- fun1();
- }
复制代码 从图中可以看出,无论是初始化了的局部静态变量,还是未初始化的局部静态变量,在程序第一次调用方法的时候才会在data区分配内存空间
|
-
1.jpg
(29.26 KB, 下载次数: 13)
|