如何在C中使用int*指针上的free函数

Tom*_*omG 1 c malloc free pointers

这是我的代码:

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);
Run Code Online (Sandbox Code Playgroud)

该程序运行完美,直到最后一行 - 自由功能.当它到达它时,我得到一个巨大的错误窗口,如"HEAP CORRUPTION DETECTED".

我知道自由函数应该得到一个void指针,但我的是int.我怎么能释放它?

谢谢!

Dan*_*her 5

您正在扫描的数量超过您为其分配的空间数量

p1 =(int*)malloc(sizeof(int)*(size-1));         
for (i=0;i<size;i++)
Run Code Online (Sandbox Code Playgroud)

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

呼叫free是正确的.