我試圖複製一個char word[50]
數組到char **wordlist
雙指針,然後realloc(wordlist, (numwords+1)*sizeof(char*))
將單詞表的大小再增加一個char*
以保存下一個word
。C:雙指針的Realloc問題
我不斷收到一個錯誤*** glibc detected *** ./program: realloc(): invalid next size
我聲明它作爲wordlist = realloc(wordlist, (numwords+1)*sizeof(char*))
void outFile(char *argv[], char **wordlist)
{
if((inFilePtr = fopen(argv[2], "r")) != NULL)
{
if((outFilePtr = fopen(endOfFile, "w")) != NULL)
{
while((c = fgetc(inFilePtr)) != EOF)
{
if(!(isspace(c)))
{
word[wordIndex] = c;
wordIndex++;
rowLim++;
}
if(isspace(c))
{
wordIndex = 0;
if(rowLim < limit)
{
rowLim++;
strcat(text[rowNum], word);
strcat(text[rowNum], " \0");
wordlist[numwords] = strdup(word);
/*strcat(wordlist[numwords], "\n\0");*/
memset(word, 0, 50);
prev = rowLim;
wordlist = realloc(wordlist, (numwords + 1)*sizeof(char*));
numwords++;
}
else
{
strcat(text[rowNum], "\n\0");
printf("text[%d] = %s",rowNum, text[rowNum]);
fputs(text[rowNum], outFilePtr);
rowNum++;
strcat(text[rowNum], word);
strcat(text[rowNum], " \0");
/*strcat(wordlist[numwords], word);
strcat(wordlist[numwords], "\n\0");
wordlist = realloc(wordlist, (numwords + 1)*sizeof(char*));*/
numwords++;
memset(word, 0, 50);
rowLim = rowLim - prev;
}
wordIndex = 0;
}
}
strcat(text[rowNum], "\n\0");
printf("text[%d] = %s",rowNum, text[rowNum]);
fputs(text[rowNum], outFilePtr);
fclose(outFilePtr);
}
這是怎麼回事?你能提供更多細節嗎? –
但numwords被初始化爲0,那麼總是不會分配空間? –
@PythonNoob發佈一個MCVE。你在程序的其他地方犯了一個錯誤,但不可能說出來,因爲你沒有顯示其他程序。 –