我似乎在使用realloc扩展数组时遇到了麻烦......请帮帮我 这是代码:
main()
{
int resultarray[] = {1}, i = 0 ,ch ;
int *number = malloc(sizeof(int));
printf("Enter number : ");
while ( ch = getchar() != '\n' ) {
number[i++] = ch-48 ;
number = realloc(number,sizeof(int));
}
printf("%d",i);
}
*`./a.out'出错:realloc():下一个大小无效:0x0000000002083010 *
答案 0 :(得分:5)
您的代码根本不会放大数组(因此写入更远 分配的内存,可能导致各种未定义的丑陋行为。)
你可能意味着像
number = realloc(number,(i+1)*sizeof(int));
realloc()
的第二个参数是 new 大小,而不是其他大小。
答案 1 :(得分:0)
while ((ch = getchar()) != '\n' ) {
number[i++] = ch-'0' ;
number = realloc(number, (i+1)*sizeof(int));
}