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
Это похоже на прокрутку на карте, но я не уверен, как действовать, поскольку ни один из моих кодов не упоминается в стеке. Как мне приступить к диагностике этой утечки?
Если какая-либо дополнительная информация требуется, сообщите мне.
С уважением,
Ник
Ответы
Ответ 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