簡體   English   中英

如何正確使用dispose()?

[英]How to use dispose() properly?

例如,如果我有一個實現Disposable的對象的實例,那么說它是

BitmapFont someFont = new BitmapFont();

根據LibGDX文檔,一旦不再需要該對象,我應該立即調用dispose()方法。 但是,如果決定將新字體分配給相同的變量,該怎么辦:

someFont = new BitmapFont();

我應該在這樣的分配之前先調用dispose(),以防止內存泄漏嗎? 換句話說,哪個變體是正確的

    BitmapFont someFont = new BitmapFont();
    //do something
    someFont.dispose();
    someFont = new BitmapFont();
    //do something else
    someFont.dispose();

或這個:

    BitmapFont someFont = new BitmapFont();
    //do something
    someFont = new BitmapFont();
    //do something else
    someFont.dispose();

我目前認為第一個是正確的,並且似乎dispose()的行為就像C ++中的析構函數一樣,只是它不是自動調用的。

那么,哪個版本實際上是正確的?

您的變量僅是指向給定對象的指針,而不是一個包含其曾經包含的所有引用的總體容器。 如果要遵循第二個代碼示例,則只在第二個BitmapFont實例上調用dispose,而不是第一個。 您的第一個模式在技術上是正確的,並且您還希望考慮try / finally塊,以確保在完成處理后調用該方法。

再來看第二個例子,第一個例子也是正確的,但是對第一個dispose()的調用是多余的,因為您再次使用了相同的指針。 祝好運 :)

更新:

不好意思! 我檢查了我錯了:/您需要調用第一個dispose()函數以避免內存泄漏, 因此第一個示例就是正確的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM