比方說,我定義的結構如下:內存對齊和結構的大小
struct MyData {
int a;
char b;
int c;
byte d;
byte e;
}
我依稀記得讀取該結構的大小不僅取決於數據類型,而且內存對齊。在32位CPU上,MyData結構將是4個字節+ 1個字節+ 4個字節+ 1個字節+ 1個字節= 11個字節。這是我的問題,內存對齊增加了結構的大小:4字節+ 1字節(+3字節填充)+ 4字節+ 1字節(+3字節填充)+ 1字節(+3字節填充)= 20字節。
這是錯誤的嗎?我錯過了什麼嗎?這是語言特定的嗎?我可以打包結構嗎?如果是這樣,優點和缺點是什麼?
謝謝!
一個小小的谷歌搜索和sizeof()測試可以給你很多的信息。你可能會在這裏找到一些有用的東西:http://c-faq.com/ – pzanoni 2012-04-12 21:41:42