Устранение ошибки mmap в приложении ipad - PullRequest
0 голосов
/ 28 февраля 2011

В своем приложении для потоковой передачи на iPad я использовал 2 потока. один для сбора сетевых данных и их анализа, а другой для рисования логики. Через несколько минут я получаю следующую ошибку:

malloc: * mmap (размер = 2097152) не удалось (код ошибки = 12) ошибка: невозможно выделить регион ** установить точку останова в malloc_error_break для отладки
Итак, мои вопросы: как возникает эта ошибка? как я могу найти это, откуда это приходит? И как мне это решить?
Спасибо как всегда.

1 Ответ

0 голосов
/ 28 февраля 2011

Вы пробовали использовать инструмент?Это должно помочь сузить суть проблемы, и если это просто утечка, требующая исправления, нехватка памяти вообще или что-то еще не так.

Похоже, что просто не хватает памяти, так что если это выглядиту него должна быть доступная память, может быть, самая странная часть - может быть, у нее не хватает смежной памяти, и нет доступного непрерывного блока 2 Мб?Я упоминаю, что, как будто вы делаете многопоточность alloc / deallocs, вы можете легко попасть в беспорядок фрагментации, и я бы порекомендовал свести к минимуму любые выделения вне основного потока, если вы можете.

(я долженпризнаюсь, я не уверен, что iOS выполняет виртуализацию памяти, как некоторые HW, чтобы избежать этого, но подумал, что стоит упомянуть на всякий случай)

Если все это не удастся, возможно, это просто проблема блокировки объекта, если вы делаете нескольковыделяет на поток?В каком случае есть какой-либо способ предварительно выделить этот блок 2 Мб для потока перед запуском?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...