C 中的sizeof問題

2021-10-03 23:30:05 字數 517 閱讀 3775

《劍指offer》筆記,關於sizeof對於自定義型別的問題。

首先注意,sizeof是在編譯階段完成計算的。

定義乙個空的型別,裡面並沒有任何成員函式和成員變數。對該型別求sizeof,得到的結果是0。因為雖然空型別的例項中不包含任何資訊,但是當我們宣告該型別的例項的時候,它必須在內容中占有一定的空間,否則無法使用這些例項。具體佔多少記憶體由編譯器決定。在visual studio中,每個空型別的例項占用1位元組的空間。

如果在該型別中新增乙個建構函式和析構函式,再求sizeof,結果仍然是0,因為呼叫建構函式和析構函式只需知道函式的位址即可。函式的位址只與型別相關,而與型別的例項無關,編譯器也不會因為這兩個函式而在例項內新增任何額外的資訊。

如果把析構函式標記為虛函式,c++編譯器一旦發現乙個型別中有虛函式,就會為該型別生成虛函式表,並在該型別的每乙個例項中新增乙個指向虛函式表的指標。在32位的機器上,乙個指標佔4位元組的空間,在64為的機器上,乙個指標佔8位元組的空間。

c 中sizeof的用法

1 作用 sizeof計算資料 包括陣列 變數 型別 結構體等 所佔記憶體空間,用位元組數表示。2 sizeof有三種用法形式,sizeof操作符,對變數或物件可以不加括號,但若是型別,須加括號 如下 1 sizeof object 物件 2 sizeof type name 型別 3 sizeof...

C中sizeof的用法

之前學習c語言,對於其中的很多細節問題都沒有了解的很清楚,都囫圇吞棗的過去了,每次看到各個公司出的筆試面試題的時候,才發現自己的c語言基礎中漏洞百出,今天就其中的乙個漏洞 sizeof好好的彌補一下,如有不當,敬請指出。sizeof,計算資料空間的大小,它不是函式,而是一種單目運算子。sizeof,...

C 中的sizeof函式

c 中的sizeof 函式我們常常會見到,但是更多的是只是熟悉,而並沒有真正的了解過,下面就對這個函式做乙個深入的介紹。sizeof是c c 中的乙個操作符 operator 其作用就是返回乙個物件或者型別所佔的記憶體位元組數。其返回值型別為size t。size t在標頭檔案stddef.h中定義...