C/C++中避免系統的字節對齊

轉載請註明出處:http://blog.csdn.net/xiaoy_h/article/details/35355427

在定義了一個新的Struct後。

系統會按照一定的規則將新生命的類型變量進行字節對齊,如下結構體:

typedef struct Test{

int a;

char b[6];

}Test;

該結構體類型可能會被對齊爲12個字節。

那麼,在內存流和文件流操作中可能會出現這樣的用法:

fwrite(strPtr,1,sizeof(Test)*len,fp);

事實上,被寫入了len*12個字節,因爲sizeof(Test)實際上不等於10,而是12。


那麼,如下簡單地操作可以避免在流操作中出現的一些問題:

char * cptr=(char *)malloc(size)

((Test *)cptr).a=0;

((Test *)cptr).b=str1;

cptr+=10;

........


剩下的各位自行發揮吧,只是稍微拋磚引玉了一下,純現碼的字,有什麼不足一定要提出~。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章