怎么用free()?

来源:百度知道 编辑:UC知道 时间:2024/06/15 13:13:25
今天做数据结构作业的时候突然想到应该把用malloc分配的空间给free掉
然后就在哪些用到malloc的函数里相应的地方加了free(),这样做没问题..
然后我回到主函数里给里面的几个指针也free了一下(这些指针在主函数里初始化为NULL,通过引用在其他函数里malloc了些空间)
这样就出错了 vc提示什么heap corruption....normal block之类的...
这个是怎么回事?
声明下:那几个主函数里的指针没有被在其他函数里free过,因为那些数据在别的函数里还有用...所以我想到程序的最后把它们给free掉。。。

在一个函数里分配,出来后再释放应该是没问题的,你是不是在函数里面释放了一次,在主函数里面又释放了一次啊?一般来说,应该遵循谁分配,谁释放的原则。

因为你用的是引用的方式,所以它们的地址是和其他函数里指针指向的地址一样,在执行主函数里的free()之前,这些地址已经被其他函数中的free()释放掉了,所以会这样