C++中 类 占 内存问题
来源:互联网 发布:mac速度慢怎么办 编辑:程序博客网 时间:2024/05/16 09:19
题目如下
若char是一字节,int是4字节,指针类型是4字节,代码如下:
class CTest{ public: CTest():m_chData(‘\0’),m_nData(0) { } virtual void mem_fun(){} private: char m_chData; int m_nData; static char s_chData;};char CTest::s_chData=’\0’;
问:
(1)若按4字节对齐sizeof(CTest)的值是多少?
(2)若按1字节对齐sizeof(CTest)的值是多少?
请选择正确的答案。
A 16 4
B 16 10
C 12 9
D 10 10
c++ 类的内存布局
1)在类中,如果什么都没有,则类占用1个字节,一旦类中有其他的占用空间成员,则这1个字节就不在计算之内,如一个类只有一个int则占用4字节而不是5字节。
2)如果只有成员函数,则还是只占用1个字节,因为类函数不占用空间
3)虚函数因为存在一个虚函数表,需要4个字节,数据成员对象如果为指针则为4字节,注意有字节对齐,如果为13字节,则进位到16字节空间。
4)sizeof的本质是得到某个类型的大小,确切的来说就是当创建这个类型的一个对象(或变量)的时候,需要为它分配的空间的大小。而类也可以理解为类似于int、float这样的一种类型,当类中出现static成员变量的时候,static成员变量是存储在静态区当中的,它是一个共享的量,因此,在为这个类创建一个实例对象的时候,是无需再为static成员变量分配空间的,所以,这个类的实例对象所需要分配的空间是要排除static成员变量的,于是,当sizeof计算类的大小的时候会忽略static成员变量的大小.
答案:
4字节对齐,结果是12= 4(虚表指针)+1(char )+3(对齐补位)+4(int)
1字节对齐,结果是9 =4(虚表指针)+1(char )+4(int)
0 0
- C++中 类 占 内存问题
- C/C++结构体所占内存的问题
- 如何计算C语言中结构体所占内存
- C中char 在 struct 中所占字节问题
- 解决FIREFOX占内存问题
- 虚拟机内存占满问题
- C语言程序所占内存分类
- C 变量占内存的大小
- C语言程序所占内存分类
- C语言程序所占内存
- 变量类型所占内存C/C++
- C/C++ 不同数据类型所占内存
- C中内存对齐问题
- c/c++中内存问题
- FIREFOX 占内存问题的解决方法
- 结构体占内存字节问题.
- linux内存一直占满问题
- javascript 变量共占内存问题
- 基本数据结构:链表
- 二叉树中的那些常见的面试题
- Opencv的Rect类-矩形类
- 五岳归来不看山
- Introduction to Java Programming编程题7.11<硬币游戏:显示正反面>
- C++中 类 占 内存问题
- [leetcode-228]Summary Ranges(java)
- POJ1979 DFS
- CSU_1508_地图的四着色
- hdu 1808 Halloween treats 抽屉原理
- hdu 1808 Halloween treats 抽屉原理
- 自定义 URL Scheme 完全指南
- Opencv的Scalar类-颜色类
- 【Git分布式版本控制系统】远程仓库Github