我想在C中有一些动态增长的数组/数据结构。下面是我拥有的C代码。但是在打印数组后,它会产生运行时错误,如下面的快照中所示。出了什么问题?它正在Windows-7上使用MS-Visual C++ 2010(免费版)进行编译。这个C代码中使用realloc的错误是什么?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *a;
int i = 5;
if((a = (int *)malloc(i * sizeof(int))) == NULL) {
fprintf(stderr, "Error: failed malloc\n");
return 1;
}
for(i = 0; i < 5; i++)
a[i] = i;
printf("-- array after malloc\n");
for(i = 0; i < 5; i++)
printf(" a[%d] = %d\n", i, a[i]);
if((a = (int *)realloc(a, i * sizeof(int))) == NULL) {
fprintf(stderr, "Error: failed realloc\n");
return 1;
}
for(i = 0; i < 10; i++)
a[i] = i;
printf("\n-- array after realloc\n");
for(i = 0; i < 10; i++)
printf(" a[%d] = %d\n", i, a[i]);
free(a);
return 0;
}
'i'是4,而不是5 – orlp
@nightcracker:'i'是5,而不是4 :) –
喔woops :)(15个字符) – orlp