C++ struct成员内存分配

Fra*_*cis 1 c++ memory struct interpreter

我有一个看起来像这样的结构:

struct rtok {
    char type;
    std::string val;
    bool term;
};
Run Code Online (Sandbox Code Playgroud)

我正在编写一个简单的解释器,这个"rtok"结构就是我如何表示一个标记.我有一个"rtoks"向量,我迭代生成解析树.

我的问题是,如果我的结构中有3个成员而我只给1个成员一个值,那么其他成员是否还会占用内存?

我的意思是,如果我将"val"设置为"test",我的令牌只占用4个字节,还是会占用6个字节?("val"为4个字节,类型为1个字节,术语为1个字节)

vso*_*tco 5

假设您没有其他成员或虚函数,您的结构将始终占用sizeof(char) + sizeof(string) + sizeof(bool) + possible padding.该string部分为自己分配了一块内存,它在销毁时解除分配.但是,这个内存在技术上并不是分配给它的内存的一部分struct.

因此,无论您为成员提供(或省略)值,结构总是具有相同的大小.