码迷,mamicode.com
首页 > 编程语言 > 详细

【问】WIndows下C++局部变量在内存中的分布问题

时间:2015-01-12 22:16:13      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

    原本是为了看看C++对象模型中子对象赋值给一个父对象和父类型指针指向的域时,到底会不会切割,就打开codebloks写了下面的代码,编译器选的是GNU。

 

 1 #define DEBUG(X) std::cout<<#X"\t=\t"<<X<<std::endl;
 2 
 3 class A
 4 {
 5 public:
 6     int a;
 7     A():a(1){}
 8 };
 9 
10 class B
11 {
12 public:
13     A oa;
14     int b;
15     B():b(2){}
16 };
17 
18 main()
19 {
20     B ob;
21     A oa;//=ob.oa;
22     int *p = 0;
23     p = (int *)&oa;
24     DEBUG(&ob);
25     DEBUG(&oa);
26     DEBUG(&p);
27 }

    打印出来的局部变量的地址的排列,从大地址到小地址是:ob,p,oa, 把DEBUG(&p)去掉之后排列又恢复正常了(ob, pa, p)。然后程序放在Linux下用g++编译,出来的结果也是正常的。

 

    已在博问里提问,怕忘记这件事就记载在博客里。静候大侠答复~ 

 

【问】WIndows下C++局部变量在内存中的分布问题

标签:

原文地址:http://www.cnblogs.com/zhchngzng/p/4219856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!