对象C:strdup帧中Malloc 48字节内存泄漏



在我的应用程序中,我收到了多个内存泄漏。该对象是Malloc 48字节,它总是源自负责的调用程序strdup。该对象的历史记录只显示它被Malloced,没有其他保留或释放。stacktrace没有显示我的任何代码。我能挑选出的唯一相关的部分是:

  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

它似乎是在地图视图上滚动时发生的,但我不确定如何继续,因为堆栈中没有引用我的代码。我应该如何诊断这种泄漏?

如果需要任何进一步的信息,请告诉我。

谨致问候,Nick

如果它"只有"48个字节,所有证据都指向系统框架中的帧(即分配从未暴露给您的代码),并且没有成千上万的帧,那么我(a)不会太担心它,但我(b)会立即通过http://bugreport.apple.com/

附上你的应用程序的二进制文件和如何重现问题的说明。

我想我已经确认它是在5.1中引入的。当我的应用程序处于活动状态时,我可以通过按下主页按钮,使用iPhone模拟器5.1将UIScrollView作为活动视图,在应用程序中复制每次内存泄漏。在iPhone模拟器5.0上运行的相同测试不会重现错误。

希望这能帮助

只是为了确认这确实是一个反复出现的问题,而不仅仅是您有问题。我在表格滚动和UIScrollView中都看到过这种情况。我已经在模拟器中测试了它,并在iPad上分析了发布版本。这似乎是5.1中的一个常见问题,但我还没有听说修复方法。我也同意,每个卷轴48字节可能会成为一个问题。

它可能是由performselectorbackground引起的,在@autoreleasepool{}块内部调用它

最新更新