看板 C_and_CPP 關於我們 聯絡資訊
印象中這個跟compiler或是cpu都有關係 舉個比較一般32bit的CPU吧 應該會是 4 bytes 排列 在傳遞的時候也是4bytes再傳 所以如果將這個structure寫成 struct account { char id1; char id2; char reserved1; char reserved2; int age; }; 會比較好 若有錯誤還請指教 ※ 引述《FAITHY ()》之銘言: : 不好意思 : 所以是說在寫struct時,最好由小單位型別開時排嗎 : 像是 : struct account : { : char id1; : char id2; : int age; : }; : 才能減少所佔用記憶體空間? : ※ 引述《XYX16888 (XYX)》之銘言: : : 跟上一篇的問題不太一樣 : : 我用的是macbook pro xcode compiler : : 應該是64bit的沒有錯 : : (一) : : #include <iostream> : : using namespace std; : : struct account : : { : : char id1; : : int age; : : char id2; : : }; : : int main (void) { : : account x; : : cout << sizeof(x) << endl; : : return 0; : : } : : print:12 : : (二) : : struct account : : { : : long name; : : char age; : : }; : : int main(void) { : : account x; : : cout << sizeof(x) << endl; : : return 0; : : } : : printf:16 : : 重點來了 64bit 以8byte為單位 : : (二) 是16沒有問題 : : 但是(一) 為什麼會是12呢? : : 記憶體分配圖示 : : ---- ---- || ---- ---- || : : ^ ^^^^ ^ : : chr int chr : : 我的想法是這樣 但是為什麼不是16? : : 感到非常疑惑@@ : : 如果問題很蠢的話 請不吝給小弟我指教 感謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.6.115
chingggg:你太小看 compiler 的能力了 02/25 23:27
FAITHY:感謝:) 02/26 01:33