我只是试图检查内存如何分配给结构对象,它占用了我预期的更多空间。我正在使用64位Windows操作系统和Microsoft Visual Studio 2010(我认为它的32位),所以可以解释为什么它的打印52字节?
struct test {
int year;// should take 4 byte
string title;// how much bytes would take ? in my case taking 31 bytes ?
double date;//should take 8 byte
int month;// should take 4 byte
} mine;
int main ()
{
cout << " size is: "<<sizeof(mine);//printing 52 ?
cout << " size is: "<<sizeof(struct test);//printing 52 ?
return 0;
}
答案 0 :(得分:1)
请注意
sizeof(struct) >= sizeof(its members)
因为每个成员可能与前一个成员满足的最低地址对齐:
mod(address/sizeof(member)) == 0
例如,请考虑此struct
:
struct s {
char c;
int i[2];
double d;
}
内存可能如下:
+-------------------------------------------------+
| c | | | | i[0] | i[1] | | | | | .. v .. |
+-------------------------------------------------+
^ ^ ^ ^ ^ ^ ^