為什麼C 空類的大小不為0?

2021-08-21 02:37:44 字數 371 閱讀 4996

先上**

#include class emptyclass ;

int main(int argc, _tchar* argv)

輸出結果:

the sizeof emptyclass is 1

請按任意鍵繼續. . .

首先,在c++中,空類同樣是可以進行例項化的,這是乙個前提。既然可以進行例項化,每個例項在記憶體中就的有乙個獨一無二的位址。為了達到這個,編譯器往往會隱含的給空類乙個位址。既然有位址,就得有記憶體分配。根據編譯器的不同,可能分配的大小不一樣。但是至少得分配乙個大小為1的位址。以上**執行結果是在vistual studio 2013中得到的。

C 空類sizeof不為0

初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的 與最終生編譯成的 卻 大相徑庭,我們並不知道編譯器在後台做了什麼工作 這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在學習程式設計過程中的一點經驗...

空類的大小為什麼是1?

1 c 編譯器不允許物件為零長度。試想乙個長度為0的物件在記憶體中怎麼存放?怎麼獲取它的位址?為了避免這種情況,c 強制給這種類插入乙個預設成員,長度為1。如果有自定義的變數,變數將取代這個預設成員。2 c 位元組對齊的結果是大小總是佔最大空間的型別的倍數,例如含有double,則為8的倍數,cla...

C 空類例項大小不是0原因

初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的 與最終生編譯成的 卻大相徑庭,我們並不知道編譯器在後台做了什麼工作 這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在學習程式設計過程中的一點經驗,...