3 Stimmen

Freigabe des von CGImageCreateWithImageInRect zugeordneten Speichers

Ich verwende CGImageCreateWithImageInRect() zur Erzeugung eines kleinen Bildes aus einem Hintergrundbild zur Laufzeit, das bei jedem Thread-Aufruf (0,01 Sekunden) angezeigt wird. Sobald ich anfange, einen Teil des Bildes durch CGImageCreateWithImageInRect Die Anwendung verbraucht sehr viel Speicher und stürzt innerhalb von Sekunden ab. Der verbrauchte Speicher geht auf 20+ MB und stürzt ab. Eine normale Anwendung würde mit 2 MB Speicherplatz auskommen.

Image1 = CGImageCreateWithImageInRect(imageRef, CGRectMake(x, y, w, h));

und nach der Verarbeitung mache ich

CGImageRelease(Image1);

aber es hilft mir nicht.

Ich möchte wissen, wie ich Speicher freigeben kann, der mit CGImageCreateWithImageInRect .

4voto

smorgan Punkte 18190

Die Antwort auf Ihre Frage lautet in der Tat CGImageRelease; die beiden Zeilen, die Sie aus Ihrem Code entnommen haben, sind korrekt ausgeglichen. Sie müssen irgendwo anders undicht sein.

-1voto

Eigentlich sind diese beiden Zeilen nicht ausgeglichen, da CGImageCreateWithImageInRect() das Originalbild beibehält. Es sollte sein

CGImageRef Image1 = CGImageCreateWithImageInRect(imageRef, CGRectMake(x, y, w, h));
CGImageRelease(imageRef);
...
CGImageRelease(Image1);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X