0
我有問題realloc。這是我的功能,它從輸出中讀取單詞,並在檢測到EOF時終止。 該函數使內存泄漏,以下程序將引發SIGSEGV或SIGABORT。什麼是問題?動態指針數組realloc失敗
int inx=0;
char **wordList=NULL;
int v;
char tmpArr[100];
do
{
v=scanf("%s",tmpArr);
if(v!=-1)
{
char* word=(char*)malloc(strlen(tmpArr)+1);
strcpy(word,tmpArr);
char**more=(char**)realloc(wordList,sizeof(char*)*(inx+1));
if(more!=NULL) {wordList=more;} else return 1;
wordList[inx++]=word;
printf("%d\n",inx);
}
}
你用調試器或添加了額外的'printf'語句找到該行的程序失敗嗎?代碼示例末尾是否存在缺少「while」語句? – simonc
你確定沒有要閱讀的單詞,大於99個字符嗎? – alk
向malloc添加錯誤檢查。不要投射malloc也不要realloc。 – alk