我的类包含1个枚举,2个int和一个指针.它没有虚函数,但测量20个字节.为什么?

Joh*_*ohn 2 c++ size class sizeof

根据标题.我真的不想列出它包含的所有其他成员但是我很惊讶地发现,只有非静态数据成员才是enum,2 int和指向自己类型的指针sizeof应该是20.

它没有虚函数,我测量了指针,enum每个都有4个字节.其他会员我应该更加努力吗?

从文件读回时,我需要此信息为其类型的n个对象分配缓冲区.

平台:bada,环境:Win 7 x64中的gcc和Eclipse.

enum blockParams {enum1, enum2, /**/};
class Block : public Object {
public:
    int begin;
protected:
    Block() : begin(-1), end(UNCLOSEDBLOCK) {}
    //Last index
    int end;
private:
    blockParams1 params;
    const Block *parentBlock;
//Lots and lots (~80) member functions and static data members.
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 6

编译器可以自由地在成员之间引入填充以实现各种对齐要求.

许多编译器提供了一种不可移植的方式来更紧密地打包结构(例如GCC __attribute ((packed))),但很少有理由使用它.


Ben*_*igt 5

当我看到一个名为base的类型时Object,我真的怀疑没有虚函数的说法.