首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

free()有关问题

2012-04-20 
free()问题free()只能释放掉链表中一个节点的内存空间?有没有释放掉一段节点的函数?是不是只能用循环释放

free()问题
free()只能释放掉链表中一个节点的内存空间?有没有释放掉一段节点的函数?是不是只能用循环释放一段节点的内存空间?

[解决办法]
这个是要求你的算法能明确的知道你需要的节点数量或节点数量的上限,必须以最大的内存需求量申请之,再自己根据应用需要分配,可能会失败或者极大浪费内存空间

另还有种办法就是初次申请的时候用malloc,以后再申请的时候用realloc,也可以一次释放,此时你的节点的地址实际上是连续空间,也存在分配失败的可能

例子的话,具体应用具体对待,没有通用的

探讨

引用:
如果你的链表中的每个节点每次都是动态申请内存创建的,那么只能用遍历链表一次释放一个节点的方式来处理
如果你的链表中的节点内存是一次性动态申请的内存(一次性申请“足够”的内存空间用来存放“全部”的节点),则可以一次就释放掉

怎么一次性分配足够的内存存放所有的节点?能不能举个例子?

热点排行