sizeof使用

来源:互联网 发布:如何打开淘宝卖家 编辑:程序博客网 时间:2024/06/05 07:31

假设有如下代码:

输出结果为:

1 4 1 4 8 12 1 4 8 8 1 8 8 12

解析:

A为空类,空类所占空间为1

B里面带有一个int元素,int占空间4

C里面没有数据成员,相当于空类,占空间1

D有虚函数,虚函数涉及到虚表(虚指针),因此占空间4(注意,此处假设还有其他虚函数,但是只要没有数据成员,所占空间还是4)

E里面除了虚函数还有一个int成员,因此占空间8

F中除了虚函数跟int成员外还有一个char*指针,但是不管是什么指针,其所占空间都为4,因此总共为12

G单一继承空类A,因此其所占空间还是1(注意,即使是多重继承空类,则其所占空间还是1)

H虚继承A,因为涉及到虚表,因此其所占空间为4

I虚继承B,因为涉及到虚表,并且B中本来有一个int变量,因此所占空间为8

J虚继承A,B,因为涉及到虚表,并且B中本来有一个int变量,因此所占空间为8(不因为两个虚继承而为12)

K中有一个静态变量,因为静态变量是存放在全局数据区的,而sizeof计算栈中分配的大小,是不会计算静态变量的,因此其所占空间为1

L,M,N涉及到内存中数据对齐的问题无论是先int后两个char或者先两个char再来一个int,其所占空间为8,而一个char,一个int,一个char所占空间为12(此时为了对齐,每个char占空间4)

原创粉丝点击