Подтвердить что ты не робот

Obj-C: утечка памяти Malloc 48 байт в рамке strdup

В моем приложении я получаю несколько утечек памяти. Объектом является Malloc 48 байт, и он всегда исходит от ответственного вызывающего абонента strdup. История объекта только показывает, что он был майольд, и никто другой не сохраняет или не выпускает. В стеке нет моего кода. Единственными признаками, которые я могу выделить, являются:

  10 UIKit _UIGestureRecognizerSendActions
   9 UIKit -[UIScrollView handlePan:]
   8 UIKit -[UIScrollView _endPanWithEvent:]
   7 UIKit -[UIScrollView(Static) _startTimer:]
   6 CoreFoundation CFNotificationCenterAddObserver
   5 CoreFoundation _CFXNotificationRegisterObserver
   4 libnotify.dylib notify_register_dispatch
   3 libnotify.dylib notify_register_mach_port
   2 libnotify.dylib token_table_add
   1 libsystem_c.dylib strdup
   0 libsystem_c.dylib malloc

Это похоже на прокрутку на карте, но я не уверен, как действовать, поскольку ни один из моих кодов не упоминается в стеке. Как мне приступить к диагностике этой утечки?

Если какая-либо дополнительная информация требуется, сообщите мне.

С уважением, Ник

4b9b3361

Ответ 1

Если это "всего" 48 байт, все доказательства указывают на фреймы в системных рамках (то есть распределение никогда не подвергается вашему коду), и их не будет 10 тысяч, тогда я (a) Не беспокойтесь об этом слишком, но я бы (b) немедленно отправил ошибку через http://bugreport.apple.com/

Прикрепите двоичный файл вашего приложения и инструкции о том, как воспроизвести проблему.

Ответ 2

Думаю, я подтвердил, что он был представлен в 5.1. Я могу дублировать утечку памяти каждый раз в своем приложении, нажав кнопку "домой", когда мое приложение активно с UIScrollView в качестве активного вида с помощью iPhone simulator 5.1. Тот же тест, запущенный на iPhone simulator 5.0, не воспроизводит ошибку.

Надеюсь, что это поможет

Ответ 3

Просто чтобы подтвердить, что это действительно повторяющаяся проблема, а не только проблема. Я видел это в прокрутке таблицы, а также в UIScrollView. Я тестировал его в симуляторе, а также профилировал версии релиза на iPad. Кажется, это общая проблема в 5.1, но я еще не слышал об исправлении. И я согласен, 48 байтов в каждом свитке потенциально могут стать проблемой.

Ответ 4

это может быть вызвано выполнением функции selectorinbackground, вызовите его внутри @autoreleasepool {} block