ue4 小知識點 Uobject 對象的垃圾回收

UObject * a;

UObject對象和普通的c++對象最大的不同:UObject對象在沒有任何引用的時候會被ue4自動回收,而c++對象在你不需要的時候手動回收,你不回收沒人幫你回收,你不回收,就會造成內存泄漏。(俗話:一個是哎沒人用,收了,一個是跟我有毛關係,不管)

看起來ue4的機制非常不錯,但是具體用的時候,比如你創建完一個UObject對象,沒有立即引用,等過一會再用,被回收了,你再用的時候你以爲他還在,所以就野指針了。

所以我們創建完UObject對象之後,要在他作用域內要保持他,不讓回收。(聽起來,和ue4的機制很矛盾)

兩種方法保持

1、在繼承UObject類的 類中,比如C類,一個UObject * a 變量 用UPROPERTY宏標記一下,則此變量不會被自動回收。而在C類對象destroy的時候a會設置爲null,引用消失,a被ue4自動回收。

2、在普通c++類中,UObject * a;變量 NewObject   完之後,addToRoot就不會被自動刪除,需要del的時候RemoveFromRoot就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章