c语言 - 无法使用 realloc: "invalid next size" 扩展阵列



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

您的代码根本不会放大数组分配的记忆,可能导致各种不确定的丑陋行为)。

您可能意味着

number = realloc(number,(i+1)*sizeof(int));

realloc()的第二个参数是 new 大小,而不是附加 size。

while ((ch = getchar()) != 'n' ) {
    number[i++] = ch-'0' ;
    number = realloc(number, (i+1)*sizeof(int));
}

最新更新