2009-08-19 125 views
3
struct node{ 
    int data; 
    struct node * next; 
}; 

編譯器如何進行分配內存「下一個」成員的時候,我們還沒有分配的內存結構「結構節點」在結構的內存分配

回答

3

next成員是一個指針 - 一個變量,它將包含地址node,而不是node本身。所有數據類型指針的大小通常都是相同的,所以編譯器知道它是一個能夠計算其大小的指針就足夠了。

7

接下來只是一個指針,它的大小是固定值,它只會添加int +指針大小+填充和分配節點struct

17

成員接下來是一個指針。指針的大小都是一樣的,所以編譯器不需要知道下一個可能指向的東西有多大。

+0

換句話說,編譯器爲「下一個」分配足夠的空間來存儲指向節點結構中的節點的指針。要實際使用「下一個」,您必須進行另一個分配調用以填充下一個結構。 – Christopher 2009-08-19 19:53:47

0

它使用malloc時動態發生。否則沒有分配。 編譯器所做的只是爲指針分配4個字節,該指針將保存「待分配」內存的 地址。如果您嘗試訪問指針而未分配任何內存,則代碼將崩潰(您將最終訪問程序中的某些無效內存)