Bitte helfen Sie mir, ein iOS-Speicherleck aufzuspüren. Danke!
Ich benutze xCode 4.0.1 und ich habe versucht, NSZombie zu aktivieren, um ein Speicherleck zu verfolgen, aber es scheint mit xCode 3.x
nicht wie zuvor zu funktionierenIch kann nicht herausfinden, woher das Speicherleck kommt, wie Instruments dies hervorhebt:
Durchgesickertes Objekt - & gt; GeneralBlock-32 Adresse - & gt; 0x4c8600 Größe - & gt; 32 Bytes Verantwortliche Bibliothek - & gt; libsystem_c.dylib Verantwortlicher Rahmen / Anrufer - & gt; strup
An dieser Stelle weiß ich nicht, ob ich Instrumente mit NSZombie richtig mit xCode 4 verwende, da es die NSZombie-Option nicht anzeigt, wenn ich auf "i" klicke, um mehr zu sehen Informationen, unter der linken Option Lecks .
BEOBACHTUNG : Meine iPhone-Anwendung spielt einen Live-Stream MMS / WMA und auch WMA-Audio-Dateien mit einer endlichen Menge an Zeit. Das Leck passiert nur mit einer endlichen wma-Datei, aber läuft perfekt , wenn ich von einer gestreamten Quelle ohne Endzeit spiele.
Erstens ist das ein malloc
-Block, kein Objekt. Zombies werden nicht funktionieren (und hätten auch nie in früheren Versionen funktioniert).
Wie oft passiert dieses Leck? Einmal? Mach dir keine Sorgen darüber. Einmal pro Stream? Einen Bug einreichen - das ist nicht in deinem Code von dem, was du bisher gepostet hast (außer dein Code ruft strdup
auf, was sicherlich möglich ist, aber untypisch in den meisten iOS-Apps, die keine Drittanbieterbibliotheken verwenden ... bist du?)
In jedem Fall müssen Sie sich keine Sorgen machen, es sei denn, es gibt 100- und 100-Byte-Zuordnungen von 32 Byte während der gesamten Laufzeit Ihrer App (aber bitte melden Sie einen Fehler).
Wie Valkio sagte, können Sie den Stack-Trace der Zuweisung direkt von gdb (oder von Instruments) abrufen.
Sie können sehen, wo es zugewiesen wurde, wenn Sie dies tun:
Tags und Links memory-leaks objective-c ios instruments nszombie