2009-03-20 11 views
3

J'utilise CGImageCreateWithImageInRect() pour générer une petite image à partir d'une image d'arrière-plan, qui va s'afficher pour chaque appel de thread (0.01 sec). Une fois que je commence à montrer une partie de l'image à travers CGImageCreateWithImageInRect l'application commence à consommer de la mémoire à très haut débit et se bloque en quelques secondes. La mémoire consommée va jusqu'à 20 Mo et tombe en panne. L'application normale fonctionnerait sur 2 Mo.Comment libérer la mémoire associée par CGImageCreateWithImageInRect

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

et après le traitement que je fais

CGImageRelease(Image1); 

mais il ne me aide.

Je veux savoir comment libérer de la mémoire associée à CGImageCreateWithImageInRect.

+0

qu'est-ce que imageRef? pouvez-vous poster plus de code? –

Répondre

4

La réponse à votre question est en fait CGImageRelease; la paire de lignes que vous avez extraites de votre code est correctement équilibrée. Vous devez fuir ailleurs.

-1

En fait, cette paire de lignes n'est pas équilibrée car CGImageCreateWithImageInRect() conserve l'image d'origine. Il devrait être ...

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

Non. Si le nouvel imageRef le conserve, il le relâchera au moment opportun. – Eiko

Questions connexes