2013-02-02 209 views
0

如何爲結構數組指針動態分配內存。例如:我有一個結構數組指針,它的大小爲1024,但是如果我需要增加大小如何去做? 我需要動態定義arr大小。對於初始化,我保持大小爲1024. 我需要增加空間後,當它多於分配,如何增加它?C指針動態分配

+0

你能發佈結構聲明/定義嗎? –

回答

1

realloc()。類似於

struct foo *ptr; 
ptr = malloc(sizeof(*ptr) * 1024); 

// later 
struct foo *tmp = realloc(ptr, sizeof(*ptr) * 2048); 
if (tmp) { 
    ptr = tmp; 
} else { 
    // something nasty happened 
    free(ptr); 
    exit(-1); 
} 
+0

就像我有像struct abc {}; abc * arr [1024];現在我需要將arr [1024]更改爲2048 – Lincon

+0

你不能那樣做。你可以做的一個類似的事情是可變長度數組,但它仍然不相同。 – 2013-02-02 07:25:20

1

對於動態內存分配,使用array implemented using linked lists將有所幫助。 您可以使用malloc()函數爲現有結構節點分配內存。

如果你想要一個結構對象中的數組增加它的內存,那麼你可以使用鏈表而不是數組裏面的結構。