理解sizeof

weixin_33860553發表於2019-01-11

1、sizeof返回的是位元組個數,記憶體編址的最小單元是位元組。因此,空物件,bool值佔用的記憶體也是一個位元組。

2、可以對哪些東西求sizeof ?

  a、物件和型別。如int a; sizeof(a), sizeof(int),二者是等價的。同一型別的物件,大小是一致的,並且在記憶體中的佈局也是一樣的,這樣編譯器才能夠按照統一的方式去解釋。可以認為sizeof(a),轉化為sizeof(int)進行求值。

  b、不能對方法名和void,計算sizeof。

  c、可以對指標計算sizeof,所有指標的大小都是4個位元組。包括:指向資料的指標,指向方法的指標,指向void的指標。

3、對於陣列名,非常特殊。對陣列名求sizeof,結果是整個陣列的大小。其他情況下,陣列名退化為一個指標(包括對陣列名++, --, 傳遞給陣列(左端陣列名退化為指標),傳遞給指標),大小是4個位元組。

4、特別注意的是:sizeof的值在編譯時確定。對錶達式或者方法計算sizeof,不會計算表示式,也不會呼叫方法,只是對他們的返回值計算sizeof。