[quiz] NSImage's leak

看板MacDev作者 (藍永倫)時間18年前 (2005/11/04 14:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/11 (看更多)
Cocoa 的記憶體管理不簡單啊~這裡有個小測驗,試試看吧: 先看看底下這段 code,它 allocate/deallocate 了一個 NSData 物件 1000 次。 int i; for (i = 0; i < 1000; i++) { NSData *data= [[NSData alloc] initWithContentsOfFile:@"xxx.jpg"]; [data release]; } 由於我有正確地作好記憶體管理,每次迴圈結束都 [data release] , 因此這段程式跑起來不會有任何問題。 現在把 NSData 換成 NSImage 試試看: int i; for (i = 0; i < 1000; i++) { NSImage *img = [[NSImage alloc] initWithContentsOfFile:@"xxx.jpg"]; [img release]; } 執行程式以後發現記憶體越用越多,用到開始吃 swap ,電腦越來越慢:直到回到 runloop 或是程式結束時,才會一口氣釋放。出了什麼差錯?和 NSData 的範例一 樣,img 都有被 release 了啊!難道 release 並沒有真正 release ?還是哪裡有 memory leak? 詳解: http://yllan.org/wordpress/index.php?p=123 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.131
文章代碼(AID): #13QlgmDJ (MacDev)
討論串 (同標題文章)
文章代碼(AID): #13QlgmDJ (MacDev)