[問題] 長度

看板C_and_CPP (C/C++)作者 (瓦斯)時間15年前 (2010/09/18 01:31), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 小弟宣告了一個 struct 第12個成員(L)是 int 第13個成員(value00)是 double 理論上這兩者的記憶體位置應該是差4 但實際執行時這兩者之間的位置卻是差8 請問多出來的長度4是從哪來的 謝謝 [Code] #include <stdio.h> typedef struct temp{ char A[10]; char B[10]; char C[26]; char D[26]; char E[15]; char F[15]; char G[20]; char H[20]; char I[26]; int J; int K; int L; double value00; double value01; }TEMP; void main(){ TEMP a; printf("L=%d, value00=%d, value01=%d\n",&a.L, &a.value00,&a.value01); printf("%d\n",sizeof(a)); } 開發平台: VC++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.132.180

09/18 01:35, , 1F
alignment, compiler 會依照他認為最有效率的方式去放
09/18 01:35, 1F

09/18 01:36, , 2F
除非你有指定不然怎麼放是隨 compiler 開心
09/18 01:36, 2F

09/18 01:38, , 3F
依照標準手段沒有方法可以改變, 只有各家擴充語法可以控制
09/18 01:38, 3F

09/18 01:38, , 4F
請問要如何指定?
09/18 01:38, 4F

09/18 01:39, , 5F
google "vc alignment"
09/18 01:39, 5F

09/18 01:40, , 6F
感謝
09/18 01:40, 6F
文章代碼(AID): #1CawODvZ (C_and_CPP)
文章代碼(AID): #1CawODvZ (C_and_CPP)