C++类的内存占用大小问题

#include<iostream>

using namespace std;

class Person

{

public:

double m_A;//double占用8字节

int m_B;//int占用4字节

};

void test01()

{

Person p;

cout<<"p占用内存大小为:"<<sizeof(p)<<endl;

}

int main()

{

test01();

system("pause");

return 0;

}

按道理应该p占用12个字节,为什么输出为16个字节呢?

c++
130 views
Comments
登录后评论
Sign In
·

这个我会,结构体存在内存对齐,对齐的大小通常是是字节最大的成员和指定对齐值小的那个的整数倍

然后和使用的编译器、平台都是有关系的

C++11以后可以使用alignof等函数操作对齐值

C11中是_Alignas等操作

一般来说不太需要手动管理,系统编程除外

·

对齐,比如一个double是8字节,数据总线的宽度也正好是64位,如果不对齐就可能要向内存进行两次取指,对齐可以保证一次就取到完整的double