动态数组释放空间的问题
为何建立的动态数组,调整长度后释放空间会出错呢?程序代码:
# 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 编辑 ]