2012-10-27 58 views
1

這是我在C中的代碼,我試圖動態更改數組大小,但它使我得到空指針。在c中運行時更改大小數組

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int main() { 
char *message = {"xxzz"}; 

message=realloc(message,5 * sizeof(*message)); 


if (message == NULL)printf("Memory exhausted\n"); 

printf("%s",message); 



return 0; 
} 
+0

@MustafaGenç:你明明看問題文本。做得好! – bitmask

回答

6

只能傳遞一個指針realloc其使用malloccalloc或其他存儲器分配功能分配的內存。
未能這樣做會導致未定義的行爲,這就是你的代碼。

+0

那麼,我的情況有什麼解決辦法? – user1261494

+2

另外,'sizeof'是使用錯誤的函數。 –

+0

@ user1261494:使用'malloc' /'calloc'將內存分配給'message' –

2

更改爲

char *message = malloc(5); 
+0

不需要投btw,DRY – Kos

+0

回答編輯。謝謝 – Anon