模板的相等 sizeofs class
Equal sizeofs of a template class
出于培训目的,我用 C++ 编写了自己的(简单的)树实现 class。在某些时候,我问自己这个 class 使用了多少内存。所以我尝试了:
cout << sizeof( tree<int> ) << " " << sizeof( tree<float> ) << " " << sizeof( tree<double> );
输出为:
24 24 24
为什么总是有相同的大小,即使我指定了不同的类型?
这是我的 class:
template <typename T>
class tree
{
private:
T val;
tree< T > *left;
tree< T > *right;
public:
tree();
tree( T val );
~tree();
};
您正在 64 位系统上编译,其中指针的长度为 8 个字节。它们还需要 8 字节对齐,以避免性能损失,因此编译器在 val
和 left
之间插入填充以确保对齐。
出于培训目的,我用 C++ 编写了自己的(简单的)树实现 class。在某些时候,我问自己这个 class 使用了多少内存。所以我尝试了:
cout << sizeof( tree<int> ) << " " << sizeof( tree<float> ) << " " << sizeof( tree<double> );
输出为:
24 24 24
为什么总是有相同的大小,即使我指定了不同的类型?
这是我的 class:
template <typename T>
class tree
{
private:
T val;
tree< T > *left;
tree< T > *right;
public:
tree();
tree( T val );
~tree();
};
您正在 64 位系统上编译,其中指针的长度为 8 个字节。它们还需要 8 字节对齐,以避免性能损失,因此编译器在 val
和 left
之间插入填充以确保对齐。