如何在C中使用int*指针的自由函数



这是我的代码:

int size;
int *p1;
scanf("%d",&size);
p1 =(int*)malloc(sizeof(int)*(size-1));         
for (i=0;i<size;i++)
    scanf("%d",&p1[i]);
free(p1);

程序完美运行直到最后一行——free函数。当它到达它,我得到一个巨大的错误窗口类似"堆腐败检测"。

我知道自由函数应该得到一个void指针,但我的是int。我怎样才能解放它?

谢谢!

您正在扫描的数字比已分配给

的空间多一个
p1 =(int*)malloc(sizeof(int)*(size-1));         
for (i=0;i<size;i++)

导致损坏,malloc size * sizeof *p1字节。

呼叫free正确

p1 =(int*)malloc(sizeof(int)*(size-1));  

应为

p1 =(int*)malloc(sizeof(int)*(size));  

您为size-1 number的整数分配了内存,但是您想读取size number of them

相关内容

  • 没有找到相关文章

最新更新