objective-c memory-leaks strdup

objective c - Obj-C: Pérdida de memoria de Malloc 48 bytes en el marco de strdup



objective-c memory-leaks (4)

Creo que he confirmado que se introdujo en 5.1. Puedo duplicar la pérdida de memoria cada vez en mi aplicación presionando el botón de inicio cuando mi aplicación está activa con un UIScrollView como la vista activa utilizando el simulador de iPhone 5.1. La misma prueba que se ejecuta en iPhone simulator 5.0 no reproduce el error.

Espero que esto ayude

En mi aplicación, estoy recibiendo varias fugas de memoria. El objeto es Malloc 48 bytes y siempre se origina a partir del responsable de llamada strdup. La historia del objeto solo muestra que está mal colocado, y no hay otras retenciones o lanzamientos. El stacktrace no muestra ninguno de mis códigos. Los únicos fragmentos de relevancia que puedo elegir son:

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

Parece que ocurre mientras se desplaza en una vista de mapa, pero no estoy seguro de cómo proceder ya que no se hace referencia a ninguno de mis códigos en la pila. ¿Cómo debo proceder en el diagnóstico de esta fuga?

Si necesita más información, por favor hágamelo saber.

Saludos, Nick


Si es "solo" 48 bytes, todas las pruebas apuntan a marcos en los marcos del sistema (es decir, la asignación nunca está expuesta a su código), y no hay cientos de miles de ellas, entonces yo (a) no me preocuparía demasiado , pero (b) inmediatamente presentaría un error a través de http://bugreport.apple.com/

Adjunte un archivo binario de su aplicación e instrucciones sobre cómo reproducir el problema.


Solo para confirmar que este es un problema recurrente y no solo para usted. He visto que esto sucede en el desplazamiento de tablas, así como en UIScrollView. Lo he probado en el simulador, así como el perfil de las versiones de lanzamiento en un iPad. Parece ser un problema común en 5.1, pero aún no he oído hablar de una solución. Y estoy de acuerdo, 48bytes en cada desplazamiento podrían potencialmente convertirse en un problema.


puede ser causado por performselectorinbackground, llámelo dentro del bloque @autoreleasepool {}