C語言記憶體配置樣本 與 位元組對齊樣本

來源:互聯網
上載者:User
Cpp代碼
1.// Example of the sizeof keyword
2.size_t i = sizeof( int );
3.
4.struct align_depends {
5. char c;
6. int i;
7.};
8.size_t size = sizeof(align_depends); // The value of size depends on
9. // the value set with /Zp or
10. // #pragma pack
11.
12.int array[] = { 1, 2, 3, 4, 5 }; // sizeof( array ) is 20
13. // sizeof( array[0] ) is 4
14.size_t sizearr = // Count of items in array
15. sizeof( array ) / sizeof( array[0] );
// Example of the sizeof keyword
size_t i = sizeof( int );

struct align_depends {
char c;
int i;
};
size_t size = sizeof(align_depends); // The value of size depends on
// the value set with /Zp or
// #pragma pack

int array[] = { 1, 2, 3, 4, 5 }; // sizeof( array ) is 20
// sizeof( array[0] ) is 4
size_t sizearr = // Count of items in array
sizeof( array ) / sizeof( array[0] );

1. 用法
1.1 sizeof和new、delete等一樣,是關鍵字,不是函數或者宏。
1.2 sizeof返回記憶體中分配的位元組數,它和作業系統的位元有關。例如在常見的32位系統中,int類型佔4個位元組;但是在16位系統中,int類型佔2個位元組。
1.3 sizeof的參數可以是類型,也可以是變數,還可以是常量。對於相同類型,以上3中形式參數的sizeof傳回值相同。
Cpp代碼
1.int a;
2.sizeof(a); // = 4
3.sizeof(int); // = 4
4.sizeof(1); // = 4
int a;
sizeof(a); // = 4
sizeof(int); // = 4
sizeof(1); // = 4

1.4 C99標準規定,函數、不能確定類型的運算式以及位域(bit-field)成員不能被計算s
izeof值,即下面這些寫法都是錯誤的。
Cpp代碼
1.void fn() { }
2.sizeof(fn); // error:函數
3.sizeof(fn()); // error:不能確定類型
4.struct S
5.{
6. int a : 3;
7.};
8.S sa;
9.sizeof( sa.a ); // error:位域成員
void fn() { }
sizeof(fn); // error:函數
sizeof(fn()); // error:不能確定類型
struct S
{
int a : 3;
};
S sa;
sizeof( sa.a ); // error:位域成員

1.5 sizeof在編譯階段處理。由於sizeof不能被編譯成機器碼,所以sizeof的參數不能被編譯,而是被替換成類型。
Cpp代碼
1.int a = -1;
2.sizeof(a=3); // = sizeof(a) = sizeof(int) = 4
3.cout

  • 上一篇:C語言記憶體配置
  • 下一篇:C語言堆棧入門——堆和棧的區別【頂嵌原創】
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.