为什么两个类对象的大小相同?

问题描述 投票:0回答:1
#include <bits/stdc++.h>
using namespace std;

class Trie{
    int a;
    Trie * child[26];
};
class Trie2{
    int a;
    char b;
    Trie * child[26];
};
int main()
{
    cout<<sizeof(Trie)<<endl;
    cout<<sizeof(Trie2)<<endl;
    return 0;
}

两者都输出 216 字节。我可以理解第一个(4(整数)+ 4(填充)+ 26 x 8)

但是无法理解第二个Trie2。

运行代码。期待不同的结果

c++ oop memory
1个回答
0
投票
由于内存对齐的工作原理,

Trie

Trie2
 最终都占用 216 个字节。即使 
Trie2
 有一个额外的 
char
 变量,编译器也会在其后面添加填充,以确保指针数组 (
child[26]
) 从 8 字节边界开始(这是 64 位系统上的指针所必需的) )。这种填充使得两个类的总大小相同,尽管两个类的结构略有不同。

© www.soinside.com 2019 - 2024. All rights reserved.