动态数组释放空间的问题
为何建立的动态数组,调整长度后释放空间会出错呢?
程序代码:# include <stdio.h>
# include <malloc.h>
int main(void)
{
int log, i;
int * p;
printf("请输入数组的长度:");
scanf("%d", &log);
p = (int *)malloc(4*log);
for (i=0; i<log; i++)
{
printf("请输入第 %d 个数组的值:", i+1);
scanf("%d", &p[i]);
}
for (i=0; i<log; i++)
{
printf("该数组的第 %d 个值是:%d\n", i, p[i]);
}
printf("请输入一个新的数组长度:");
scanf("%d", &log);
realloc(p,log);
for (i=0; i<log; i++)
{
printf("请输入第 %d 个数组的值:", i+1);
scanf("%d", &p[i]);
}
for (i=0; i<log; i++) //已修正,原为5,但执行到 free(p) 这一步仍然出错。
{
printf("该数组的第 %d 个值是:%d\n", i, p[i]);
}
free(p);//释放指针P所指向的空间就运行出错了
return 0;
}[ 本帖最后由 lixnkei 于 2010-2-27 13:21 编辑 ]







