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.我怎么能释放它?
谢谢!
您正在扫描的数量超过您为其分配的空间数量
p1 =(int*)malloc(sizeof(int)*(size-1));
for (i=0;i<size;i++)
Run Code Online (Sandbox Code Playgroud)
导致损坏,malloc size * sizeof *p1字节.
呼叫free是正确的.
| 归档时间: |
|
| 查看次数: |
5036 次 |
| 最近记录: |