Можно ли частично освободить блок памяти? - PullRequest
3 голосов
/ 15 июля 2011

Я пишу очень интенсивную память, которая будет иметь десятки массивов malloc. Когда приложение получает предупреждение о нехватке памяти, я хочу сбросить нижнюю половину каждого из этих массивов. Есть ли способ сделать это?

Мне нужно каким-то образом сохранить половину памяти в каждом массиве. Очевидно, что если у приложения мало памяти, я не могу выделить меньший массив, скопировать в него половину своих данных и затем освободить старый массив. Есть ли какая-нибудь функция, которая может освободить блок памяти, начиная с указателя A и заканчивая указателем B или что-то в этом роде?

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Realloc () может вернуть завершающую часть памяти malloc обратно в пул распределения, но не может вернуть ее в ОС.

Realloc () также не поможет с фрагментацией памяти, что, вероятно, является проблемой в ситуации нехватки памяти.

0 голосов
/ 15 июля 2011

Если они являются NSMutableArrays, вы можете заменить объекты в нижнем конце одним экземпляром [NSNull null], тем самым освободив все эти объекты.

NSNull Ссылка класса

...