为啥我一用free就会遇到这个问题

为啥要 sizeof(int *)  ,你要的应该是sizeof(int),如果是64位那sizeof(int *)是8,而sizeof(int )只会是4

个人感觉:仅为 指针a分配了四个字节的内存,然后for循环中多次使用到了*(a+i)导致指针a指向了自己内存以外的地址,有可能已经指向了野地址,然后释放野地址时出现了程序中断现象。