gpt4 book ai didi

c++ - 模板类的大小

转载 作者:行者123 更新时间:2023-11-28 06:47:48 25 4
gpt4 key购买 nike

我遇到这样的问题:

template <typename T1, typename T2>
class X {
T1 a;
T2 b;
};

int main() {
std::cout << sizeof(X<int,char>) << std::endl;
std::cout << sizeof(X<int,int>) << std::endl;
std::cout << sizeof(X<char,char>) << std::endl;
};

gcc 4.4.7 的输出是

8
8
2

我不明白为什么第一个结果是 8。对我来说它应该是 6。double/int 模板参数也是如此(给出 16,而不是 12)。我还检查过,这种行为与我使用的是模板类还是只有 2 个成员 int 和 char 的普通类无关。

最佳答案

那是因为 structure alignment .通常,编译器会尝试将对象(通过填充)对齐到特定的字节边界,4 字节8 字节 边界都很常见。

This pageC 中讨论了相同的想法,但在 C++ 中虽然不完全相同,但它是相似的。

关于c++ - 模板类的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com