内存对齐问题(手写解答)
有了以上基础思想,接下来引入规则,就直接上例子告诉你怎么做,理解到这感觉就够了,内部具体怎么实现的能力有限,也不能回答,接下来以下面例子为例:
#include<iostream> #pragma pack(4) using namespace std; class A { public: char a; short b; int c; char d; float e; char f; }; int main() { cout << sizeof(A) << endl; printf("%d\n",&A::a); printf("%d\n", &A::b); printf("%d\n", &A::c); printf("%d\n", &A::d); printf("%d\n", &A::e); printf("%d\n", &A::f); while (1); return 0; }
输出:
下面我画图说明下这个怎么来的: