#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++11以后可以使用
alignof
等函数操作对齐值C11中是
_Alignas
等操作一般来说不太需要手动管理,系统编程除外