我想使用realloc函數來存儲動態數組中的輸入字符。一切都很順利,當我使用它時,沒有調用免費方法釋放內存使用後。但是,當我使用它免費的方法運行時錯誤來了。這是我的代碼片段。Realloc免費使用
int main(){
char *message ;
int len = 0 ;
char c ;
while((c=getchar()) != '\n'){
message = realloc(message,(len+1)*sizeof(char)) ;
message[len++] = c ;
}
message = realloc(message, (len+1)* sizeof(char));
message[len]='\0' ;
printf("Message is %s\n",message);
free(message) ;
return 0 ;
}
任何人都可以弄清楚這一點。因爲我需要同時使用這兩種方法.. 謝謝!
請發佈收到的錯誤。 – Linuxios
我得到這個錯誤*** glibc檢測到*** ./reallocdemo:realloc():無效指針:0x00d5cff4 *** ======= Backtrace:========= /lib/i386-linux-gnu/libc.so.6(+ 0x6b961)[0xc6b961] /lib/i386-linux-gnu/libc.so.6(realloc+0x2ad)[0xc7073d] /lib/i386-linux -gnu/libc.so.6(realloc + 0x2c5)[0xc70755] ./reallocdemo[0x80484b6] /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0xc16e37] ./reallocdemo [0x8048401] – user976754
消息未初始化。在調用realloc之前,至少可以將它設置爲null。 – wildplasser