CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

VC编译器中,类对象的内存布局是怎样的?

楼主terryfjh()2004-08-04 20:42:44 在 C/C++ / C++ 语言 提问

RT 问题点数:100、回复次数:17Top

1 楼lifanxi(Byron)回复于 2004-08-04 20:53:28 得分 10

您可以在DEBUG模式下打开反汇编窗口来读它生成的汇编代码,由此来学习它的内存布局形式。就这么讲是讲不清楚的。Top

2 楼antijpn(antijpn)回复于 2004-08-04 21:04:22 得分 20

回答是:天机玄妙,无从猜测。  
   
  VC++的编译器生成的汇编和实际情况也不一样,只能从理论上推知各个成员的布局,但是最终代码里面搞不好很多东西安排的顺序什么的完全都不一样,这个可以从函数中对象定义以及实际地址的关系看出来Top

3 楼renheihei(请大家注意:用DEV C++作为测试编译器!!!!!!!!!,vc++测试可能通不过!!!!!!!!)回复于 2004-08-04 21:51:55 得分 0

mark  
  Top

4 楼chunhai12(小海)回复于 2004-08-05 09:27:39 得分 0

不懂  
  来学习Top

5 楼freefalcon(心宇—消失中...)回复于 2004-08-05 11:12:33 得分 10

不是看汇编代码,是看内存,你可以将各成员赋上不同的值,然后方便查看  
  自己观察内存是最好的方法,另外可以参考<深度探索C++对象模型>Top

6 楼LLnju(LLnju)回复于 2004-08-05 11:48:15 得分 10

没看到什么很玄妙的地方啊,编译的时候你加上   /FA[file]   选项看看它生成的汇编代码就一目了然了Top

7 楼SoRoMan(因为所以,所以因为)回复于 2004-08-05 12:12:50 得分 10

为了支持构造,析构函数,虚拟函数成员,RTTI,C++编译器的确在幕后作了不少工作。  
  调试看内存,还有看看<深度探索C++对象模型>  
  Top

8 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-08-05 12:14:02 得分 10

<深度探索C++对象模型>讲的概念!具体你还是要反汇编出来.Top

9 楼antijpn(antijpn)回复于 2004-08-05 14:45:21 得分 10

回复人:   LLnju(LLnju)   (   )   信誉:100     2004-8-5   11:48:16     得分:   0      
     
     
         
  没看到什么很玄妙的地方啊,编译的时候你加上   /FA[file]   选项看看它生成的汇编代码就一目了然了  
   
     
     
  汇编并不能显示真正的内存布局什么的,它是根据源文件生成的,而不是最终代码的反汇编  
   
  反汇编倒是可行的Top

10 楼terryfjh()回复于 2004-08-05 19:51:08 得分 0

<深度探索C++对象模型>我在看,里面讲的有些东东(比如说多层继承后,子类的vptr个数等)和VC编译器的处理不一样,书里面也说有些东东因编译而定  
  所以我想弄清楚<深度探索C++对象模型>里讲的对象的内存布局与VC实际的内存布局的区别,特别是vptr和虚基类的指针  
  谢谢!哪位高人指点一下。Top

11 楼chinadragonss(独孤俊)回复于 2004-08-05 21:13:48 得分 0

谁有<深度探索C++对象模型>这本书的电子版的吗,能不能给俺发一份。dugujung@126.comTop

12 楼zxs790501(沧海一粟)回复于 2004-08-05 21:51:50 得分 0

<深度探索C++对象模型>这本书的电子版  
   
  我也要一份,好心人寄给我啊:zhuxiangsheng@sina.comTop

13 楼terryfjh()回复于 2004-08-06 20:28:44 得分 0

文件有8M多,寄不过来啊Top

14 楼terryfjh()回复于 2004-08-07 18:42:45 得分 0

upTop

15 楼dadayanyan(dadayanyan)回复于 2004-08-07 18:51:27 得分 10

c++深度探索   第三章有介绍的Top

16 楼terryfjh()回复于 2004-08-08 18:49:41 得分 0

里面写的东东和实际的不太一样Top

17 楼bjyjy(yjy)回复于 2004-08-12 18:59:00 得分 10

例如:  
  class   CBlock   {  
   
  private:  
          BYTE     blk[10];  
   
  public:  
          ..........  
           
  }  
   
  int   main(void)  
  {  
          CBlock     block;  
   
  }  
   
  通过汇编程序发现,CBlock内的数据blk是在栈内分配的,试了其他的  
  程序发觉也是这样。  
  Top

相关问题

  • vc++编译器的问题
  • VC编译器的问题
  • VC++6.0编译器问题.......
  • vc编译器死机
  • VC编译器的提问
  • VC的编译器是哪个啊?
  • 关于VC编译器的问题~~~
  • VC编译器有问题吗?
  • 关于vc编译器的问题
  • VC编译器的BUG,快来看啊

关键词

  • 编译器
  • 汇编
  • 内存
  • 代码
  • 函数
  • vc
  • 布局
  • cblock
  • 生成
  • 玄妙

得分解答快速导航

  • 帖主:terryfjh
  • lifanxi
  • antijpn
  • freefalcon
  • LLnju
  • SoRoMan
  • sharkhuang
  • antijpn
  • dadayanyan
  • bjyjy

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo