2013-07-02 2 views
-1

У меня возникла проблема с перераспределением массива массива символов. Когда я пытаюсь отладить его с помощью GDB, я получил realloc(): invalid old size: 0x00000000006042f0 error. Вот код:realloc вызывает ошибку карты памяти SIGABRT

int wordCount = 1; 
int charCount = 1; 
char** words = (char**)malloc(wordCount*sizeof(char*)); 
char* words[0] = (char*)malloc(charCount*sizeof(char)); 
char c = getNextChar(file);//it will read the content of the file character by character 
while(c!='\0')//read 
{ 
    words[wordCount-1] = (char*)realloc(words[wordCount-1],(charCount+1)*sizeof(char)); 
    charCount++; 
    c = getNextChar(file); 
    if(c=='\n' || c==' ') 
    { 
     words = (char**)realloc(words, (countWord+1)*sizeof(char*)); //this is where I got the error 
     wordCount++; 
     c = getNextChar(file); 
    } 
} 

любое предложение? благодаря

+0

Это настоящий код? В строке KarthikT указывается, по крайней мере, предупреждение о компиляторе. –

+2

Пожалуйста, убедитесь, что код в вашем сообщении - это фактический код. Очень сложно помочь вам в противном случае. Скопируйте и вставьте из редактора или IDE. Не переписывайте его и не редактируйте его после вставки. –

+1

Вы '# include'' '? Кроме того: нет оснований, и нет никакой выгоды, чтобы получить результат 'malloc()'/'realloc()' в C, тем более: это приводит к скрытию ошибок. – alk

ответ

1
char* words[0] = (char*)malloc(charCount*sizeof(char)); 

Если это на самом деле в вашем коде (это errors out for me), попробуйте удалить первый char*.

Смежные вопросы