可以部分释放一块内存吗?

时间:2011-07-15 16:52:17

标签: iphone ios memory-management malloc free

我正在编写一个内存非常密集的程序,它将包含数十个malloc'd数组。当应用程序收到低内存警告时,我想转储每个这些数组的下半部分。有没有办法做到这一点?

我需要一些方法可以保留每个数组中的一半内存。显然,如果应用程序内存不足,我无法分配较小的数组,将一半数据复制到其中,然后释放旧数组。是否有任何函数可以释放从指针A开始到指针B结束的内存块?

2 个答案:

答案 0 :(得分:2)

Realloc()可以将malloc内存的尾部返回给分配池,但不能将其返回给操作系统。

Realloc()也无助于内存碎片,这可能是内存不足的问题。

答案 1 :(得分:0)

如果它们是NSMutableArrays,您可以使用单个[NSNull null]实例替换下端的对象,从而释放所有这些对象。

NSNull Class Reference