[問題] 結構對齊
我使用VC++2003
已把結構成員對齊四位元組打開
目前有一主要結構DATA和一個結構QUEUE
struct DATA
{
int a;
QUEUE c[50];
QUEUE d[17];
};
我會把資料備份到sram
要寫入a的時候就位移0,寫入c就位移sizeof(int)+sizeof(QUEUE)*count
-------------------------------
現在我多塞了一個int變數b
struct DATA
{
int a;
int b;
QUEUE c[50];
QUEUE d[17];
};
寫入a,位移0,寫入b,位移sizeof(int)
寫入C位移sizeof(int)*2+sizeof(QUEUE)*count
可是會發現b的值常會錯誤,c的資料也都是0
會因為資料要對齊,所以我寫入的位移不能直接用sizeof(int)嗎?
我看以前人的寫法好像都會盡量把結構湊出4的倍數
但是上網查了一下,還是不太清楚怎麼變化
還是我應該直接抓address相減,來算位移量?
~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.46.168.18
※ 編輯: clarkman 來自: 114.46.168.18 (03/07 11:33)
推
03/07 11:51, , 1F
03/07 11:51, 1F
推
03/07 12:30, , 2F
03/07 12:30, 2F
→
03/07 15:48, , 3F
03/07 15:48, 3F
推
03/07 23:25, , 4F
03/07 23:25, 4F
推
03/07 23:39, , 5F
03/07 23:39, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章