首頁 >後端開發 >C++ >為什麼空 C 類別的大小不為零?

為什麼空 C 類別的大小不為零?

Patricia Arquette
Patricia Arquette原創
2024-11-03 15:18:30470瀏覽

Why Do Empty C   Classes Have a Non-Zero Size?

空C 類非零大小背後的謎團

在C 中,空類不會佔用記憶體的概念可能看起來像直覺的。然而,這種假設受到特殊行為的挑戰,即使沒有任何成員的類別也表現出非零大小。為什麼會存在這種明顯的悖論?

事實證明,C 標準明確禁止物件及其對應的類別的大小為零。這項規定源自於區分可能共享相同記憶體空間的不同物件的固有要求。

標準透過要求所有類別(無論其內容為何)的最小大小必須為 1 來確保這種差異。這可以防止兩個不同的物件具有相同的記憶體位址,因為這種情況會導致不可預測和不期望的行為。

因此,即使類別沒有任何使用者定義的資料成員,它本質上也包含實作細節例如虛擬函數表和指標成員。這些基本元件會影響類別的大小,儘管對使用者來說是看不見的,因此甚至會導致空類別佔用非零的記憶體量。

以上是為什麼空 C 類別的大小不為零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn