为什么空 C 类的大小不为零?
尽管 C 中的空类表面上是空的,但它占用非- 零尺寸。标准明确禁止对象及其对应的类的大小为 0。此限制源于需要防止不同的对象共享相同的内存地址。
以以下代码片段为例:
<code class="cpp">#include <iostream> class Test { }; int main() { std::cout << sizeof(Test); return 0; }</code>
与您最初的直觉(输出为 0)不同,它实际上会返回 1。此行为归因于标准针对零大小对象的规则。
此规则的根本原因是为了确保不同的对象具有唯一的内存地址。这对于正确的对象识别和操作至关重要。如果对象的大小可以为 0,则两个单独的对象可能会占用相同的内存位置。这将在您的程序中导致不可预测的、潜在的灾难性后果。
因此,即使空类可能不包含任何可见的数据成员,它仍然具有 1 字节的最小大小,以保持标准的零-size 禁止并保证内存分配的完整性。
以上是为什么空 C 类的大小为 1 字节?的详细内容。更多信息请关注PHP中文网其他相关文章!