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就行。