當您嵌入指向結構的指針時,您需要考慮圖層中的內存分配。在這種情況下,首先從最高級開始效果最好。因此,開始有:
LISTA_TLUMACZEN tab[5];
在這裏,你是說你想p LISTA_TLUMACZEN
結構的表。如果你想這是動態的,那麼你需要一個指向LISTA_TLUMACZEN
:
LISTA_TLUMACZEN *tab;
然後分配它,你需要確定它有多大。在這種情況下,我們會說NUMBER_OF_ELEMENTS
:
tab = (LISTA_TLUMACZEN *)malloc(sizeof(LISTA_TLUMACZEN) * 5);
如果你想成爲特別安全的malloc
參數不超出範圍,你可以使用:
tab = (LISTA_TLUMACZEN *)(NUMBER_OF_ELEMENTS <= (SIZE_MAX/sizeof(LISTA_TLUMACZEN)) ? malloc(sizeof(LISTA_TLUMACZEN) * 5) : NULL);
現在我們有動態分配相當於您的tab[5]
數據聲明。請注意,這是一個LISTA_TLUMACZEN
結構的表格。所以分配的內存量是5的乘積和結構的大小。
您的LISTA_TLUMACZEN
結構也有一個指向另一個具有更多指針的結構的指針。您可以分配那些遵循相同類型的邏輯,或者實際上只在程序需要時才按需要分配這些邏輯,並在不再需要時釋放它們(這是進行動態分配的原因)。如果你只是預先分配一切與malloc
然後沒有意義,你也可以靜態地聲明一切。
你用'malloc'標記了這個。所以? – 2013-06-22 19:59:58
'LISTA_TLUMACZEN **標籤= malloc的(的sizeof(LISTA_TLUMACZEN *)* 5)' – Elazar