回覆列表
  • 1 # 快樂與我同行9

    c語言獲取變數、資料型別記憶體佔多少,使用sizeof運算子即可。

    關於結構體所佔的記憶體多少,一般還要考慮對齊的問題。只所以要進行資料對齊是因為編譯器對結構的儲存的特殊處理能提高cpu儲存變數的速度,一般來說,32位的cpu記憶體以4位元組對齊,64位的cpu的以8位元組的對齊。一般可以使用#pragmapack()來指出對齊的位元組數。比如下面的程式碼,在debug會顯示結構體test的記憶體大小為28,如果生成release版則所佔記憶體大小為32。

    #include?

    #ifdef?_debug

    #pragma?pack(4)

    struct?test

    {????

    char?x[13];?//?13

    int?d;????????//?4????

    double?f;?????//?8

    }ss;

    #else

    #pragma?pack(8)

    struct?test

    {????

    char?x[13];?//?13

    int?d;????????//?4????

    double?f;?????//?8

    }ss;

    #endif

    int?main(void){??

    printf("%d\n",?sizeof(ss));??

    ????return?0;

    }

  • 中秋節和大豐收的關聯?
  • 新手,14萬內能落地,自動擋轎車,耐用,省心,毛病少,油耗無所謂?