您的位置:首页 > 编程语言 > C语言/C++

C++sizeof计算各数据类型大小

2016-07-19 10:07 344 查看
sizeof的输出单位是字节,即B,1B=8b(位),测试工具为VS2013旗舰版。



我们再来看看类和结构体。

(1)空类(空结构体)



即使类中有构造函数和析构函数,还是1B,但是,当把析构函数改成虚函数:



再增加一个(多个)虚函数:



依然是4。这是因为,当有虚函数时,这个类会添加一个指针,该指针指向虚函数表,所以,不管增加多少个虚函数,类中还是只有一个指向虚函数表的指针。

(2)类中添加其他变量



计算过程:指向虚函数的指针大小(4)+int大小(4)+string大小(28)=36

(3)子类有虚函数



发现大小和基类一样,说明指向虚函数表的指针还是只有一个。

(4)数组和指针

int a[2]中的a和 int *b=new int[2]中的b大小一样吗?书上说a实际上也是指针,所以应该一样啊。

测试结果:



发现并不一样,对于数组,sizeof计算的是数组元素个数*类型大小;而指针就是一个指针的大小。(一个指针,

不管它指向哪一种数据类型,指针本身所需的内存大小是固定的.Inside The C++ Object Model)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: