当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

C++对象筹划及多态实现摸索之内存筹划[VC/C++编程]

赞助商链接



  本文“C++对象筹划及多态实现摸索之内存筹划[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

为了便于解析和察看对象的内存筹划,我把代码生成时的结构成员对齐选项设置为1字节,默许为8字节.假如你在自己的工程下编译文中的代码,请做一样的设置.因为我写了一些函数打印对象中的筹划信息,假如对象选项不是1字节,运行这些代码会呈现指针非常错误.

普通类对象的内存筹划

首先我们从普通类对象的内存筹划开始.c000为一个空类,定义以下:

struct c000

{};

运行以下代码打印它的大小及对象中的内容.

print_size_detail(c000)

后果为:

the size of c000 is 1

the detail of c000 is cc

可以看到它的大小为1字节,这是一个占位符.我们可以看到它的值是0xcc.在debug情势下,这表示是由编译器插入的调试代码所初始化的内存.在release情势下大概是个随机值,我测试时值为0x00.

定义两个类,c010和c011以下:

struct c010

{

 c010() : c_(0x01) {}

 void foo() { c_ = 0x02; }

 char c_;

};

struct c011

{

 c011() : c1_(0x02), c2_(0x03) {}

 char c1_;

 char c2_;

};

运行以下代码打印它们的大小及对象中的内容.

print_size_detail(c010)

print_size_detail(c012)

后果为:

the size of c010 is 1

the detail of c010 is 01

the size of c011 is 2

the detail of c011 is 02 03

我们从对象的内存输出中可以看到,它们的值就是我们在构造函数中赋的值,c010为0x01,c011为0x0203.大小辨别为1、2.


  以上是“C++对象筹划及多态实现摸索之内存筹划[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .