2013-04-22 113 views
3

內存空間保留在聲明後面的結構或當我們創建該結構的對象?當內存空間被保留爲struct?

struct student 
{ 
    int marks; 
    float average; 
}; 
+1

我認爲這取決於您是否使用數據。 – 0x499602D2 2013-04-22 01:39:28

+1

當你實例化一個對象時它被保留。即用'學生'聲明一個變量;'將保留內存,就像'student * s = new student()'一樣;但是寫下你所做的只是定義了類型,它不會保留內存,因爲沒有創建變量。 – nonsensickle 2013-04-22 01:44:06

+0

從技術上講,在C++中,你應該使用類。類和結構一樣工作,但增加了一些功能,如模板。 C++具有結構的唯一原因是與舊C程序的向後兼容性 – refi64 2013-04-22 02:17:09

回答

0

當您聲明struct時,您沒有爲該結構分配內存。但是,你可以聲明一個struct定義類型的變量向右走,像這樣:

struct student 
{ 
    int marks; 
    float average; 
} var_name; // Reserves the memory in the global/static space 

您還可以定義在自動空間(局部變量)或與new動態空間變量。

0

通常它應該是當你創建一個定義。既然你可以聲明一個結構的實例而不定義它(可能在頭文件中帶有extern),除非定義它,否則沒有空間將用於實例。

但是,如果編譯器沒有實際使用,編譯器可以選擇將對象從程序中除去。有時候,編譯器可能會非常熱心並剝奪根本沒有被引用的對象,但實際上會執行重要的操作,比如某種註冊。