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个字节)
假设您没有其他成员或虚函数,您的结构将始终占用sizeof(char) + sizeof(string) + sizeof(bool) + possible padding.该string部分为自己分配了一块内存,它在销毁时解除分配.但是,这个内存在技术上并不是分配给它的内存的一部分struct.
因此,无论您为成员提供(或省略)值,结构总是具有相同的大小.