返回信息流之前问过了一个类似的问题,不过还没有搞懂。重新整理了一下问题,希望好心人能帮忙解答。
class A{
public:
char x[0];
};
class B{
};
第一,我想知道,这两种情况有区别么,有区别的话有什么区别?
第二,目前我测试出来的结果是sizeof(A)=0,sizeof(B)=1。那么问题来了:
如果定义一个A数组,和一个B数组。A数组的每个元素的地址岂不是相同?但是C++标准中不是说要保证任何两个不同的对象不饿能够拥有相同的内存地址?
第三:在程序中采用如下方式
B a,b;
那么a和b之间的地址有什么联系么?是正好差sizeof(B)那么大么?这种情况下,在内存中应该是什么样的布局呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #85432同步于 2015/1/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于class占用空间的问题
libenchao
2015/1/23镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
那暖神的意思是,这种类型的内存布局都跟具体编译器相关,而不是语言本身的问题是么?我也不是想依赖它的大小,只是想搞明白sizeof测出来的大小,跟一个对象实际中在内存中占用的大小是什么关系?请暖神指点
【 在 nuanyangyang 的大作中提到: 】
: 大小和实现有关。不要依赖大小。
【 在 libenchao 的大作中提到: 】
: 那暖神的意思是,这种类型的内存布局都跟具体编译器相关,而不是语言本身的问题是么?我也不是想依赖它的大小,只是想搞明白sizeof测出来的大小,跟一个对象实际中在内存中占用的大小是什么关系?请暖神指点
:
嗯。就是这样。和编译器、操作系统、CPU都有关系。