无法使用realloc扩展数组:“下一个大小无效”

时间:2014-02-04 21:01:16

标签: c arrays realloc

我似乎在使用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 *

2 个答案:

答案 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));
}