2013-04-18 45 views

回答

8

是的你需要釋放枚舉器。誰撥打GetEnumerator誰擁有它返回的內容。

當它是一個for/in循環時,編譯器將寫入代碼並確保枚舉器對象被丟棄。當你稱呼它時,你的工作就是處理統計員。

這實際上是一個很容易回答的問題。簡單地創建一個程序,調用GetEnumerator而不是Free它。使用內存管理器的設施來檢查對象是否泄露。

uses 
    System.Generics.Collections; 

begin 
    ReportMemoryLeaksOnShutdown := True; 
    with TList<Integer>.Create do 
    begin 
    GetEnumerator; 
    Free; 
    end; 
end. 

,這導致以下泄漏報告:發生

意外的內存泄漏。意想不到的小塊泄漏是:

  • 13 - 20個字節:TList.TEnumerator X 1
相關問題