是 sizeof() 递归的
Is sizeof() recursive?
答案应该很简单,但我想确定一下。
sizeof()
递归吗?例如
struct foo
{
DWORD a;
DWORD b;
};
struct bar
{
DWORD c;
foo d;
};
sizeof(bar)
是否包含 foo
的大小,返回完整的 12 个字节(假设 DWORD 是 4 个字节)?
是的... sizeof
给出了直接包含在类型中的所有成员的总数,包括struct
/class
数据成员、非虚拟基类、一些跟踪虚拟基的实现定义的链接/计数器、虚拟调度表指针、帮助对齐数据成员以实现 CPU 安全或高效访问的填充,以及理论上实现可能想要放入的任何其他内容! (例如,用于运行时调试/错误检测的东西,垃圾收集的非标准支持......
当然,它不包括指向或引用对象的大小,但包括这些指针和引用的大小。
是的,sizeof 运算符为您提供了结构的大小,包括其所有成员。
但请注意,编译器可能会添加自己的填充,因此实际大小可能/可能不等于结构成员的大小之和。
是的。摘自ISO/IEC 9899:TC3:
当应用于具有结构或联合类型的操作数时,结果是此类对象中的字节总数,包括内部填充和尾随填充。
(强调我的)
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 如何使用递归打印修改后的星号三角形图案
- 在可变参数模板中使用 sizeof 运算符跳过递归结束的函数
- 是 sizeof() 递归的
- gdb中的递归sizeof