尽管在这个论坛和其他与 sizeof 运算符相关的问题上已经提出了几个问题,但我无法得到任何关于编译器如何评估 sizeof 运算符以找到任何数据类型、变量、指针、数组等的大小的答案。如果可能的话还指出了一些可以帮助我详细了解这一点的链接。任何帮助将不胜感激。谢谢。
最佳答案
编译器只是知道原始数据类型的大小;这些知识基本上内置于编译器中。
对于传统的固定大小数组和复杂数据类型(结构和类),它只是将组成基元的大小相加并考虑任何必要的填充。参见 http://en.wikipedia.org/wiki/Data_structure_alignment
在大多数情况下,sizeof()
计算是在编译时完成的。异常(exception)情况是可变长度数组(C99 中的新特性),一旦元素数量已知,它就会在运行时计算。
关于c++ - 编译器如何评估 c 中的 sizeof 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13938086/