为什么这个程序不适用于所有输入? (读入输入并以相反顺序打印) Xcode6生成错误消息: hw5(14536,0x7fff7c23f310)malloc: *对象0x100103aa0的错误:没有分配重新分配的指针 * 在malloc_error_break中设置断点以进行调试 不幸的是我不明白这一点。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *input;
unsigned long long index;
input = malloc(1);
for (index = 0; (input[index] = getchar()) != EOF; index++)
{
if (input == NULL)
{
free(input);
printf("Error: Out of memory!\n");
return 0;
}
realloc(input, index + 2);
}
for (index = index - 1; index != 0; index--)
{
putchar(input[index]);
}
printf("\n");
free(input);
return 0;
}
答案 0 :(得分:3)
realloc()返回指向新对象的指针。我使用临时变量,因为如果realloc()无法重新分配内存,则返回NULL并且input
仍然有效。
char* temp = realloc(input, index + 2);
if( !temp )
{
//deal with error ...
}
input = temp ;