我想創建動態字符串數組作爲讀取文件的緩衝區。重點在於數組必須以給定的大小聲明,但是如果文件包含的行數多於緩衝區大小,它必須調整大小。緩衝區我創建看起來是這樣的:Realloc C字符串數組堆損壞
#define N 32
char **array = (char**) malloc((N+1)*sizeof(char*));
當談到重新分配我試着這樣說:
array = (char**) realloc(array, (2*N+1)*sizeof(char*));
但不幸的是它會導致堆損壞。我應該如何正確地做到這一點?
問題可能出現在您使用char **而不是char *的事實中;如果你爲二維數組動態分配內存,那麼你做錯了。 – Pandrei
我應該如何爲字符串創建動態數組? –
如果你想要一串字符串,使用char **沒有問題。但是,您的重新分配只能使用一次(因爲大小是硬編碼的),您使用realloc()的方式不能正確處理失敗。也許你自己設置字符串的方式有問題嗎? – Medinoc