作者RyanGun (雷恩)
看板C_and_CPP
標題Re: [問題] struct 記憶體配置大小問題
時間Fri Feb 25 23:20:13 2011
印象中這個跟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