首页 > 代码库 > 【问】WIndows下C++局部变量在内存中的分布问题
【问】WIndows下C++局部变量在内存中的分布问题
原本是为了看看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 B11 {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++局部变量在内存中的分布问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。