1
我有一個愚蠢的問題。如果我在C++中有一個數組,我正在使用它來存儲大量引用(我猜IntPtrs,還沒有到那麼遠)到各種C#對象,C#中的GC如何知道不要收集這些對象?我的意思是,標記和掃描算法無法看到非託管代碼結構,對吧?所以,如果對這些C#對象的唯一引用位於此結構中,那麼我是否可以不必額外做些事情來告訴GC不要收集它們呢?GC和C#非託管代碼/ C++
我有一個愚蠢的問題。如果我在C++中有一個數組,我正在使用它來存儲大量引用(我猜IntPtrs,還沒有到那麼遠)到各種C#對象,C#中的GC如何知道不要收集這些對象?我的意思是,標記和掃描算法無法看到非託管代碼結構,對吧?所以,如果對這些C#對象的唯一引用位於此結構中,那麼我是否可以不必額外做些事情來告訴GC不要收集它們呢?GC和C#非託管代碼/ C++
是的,你將不得不採取特殊照顧,不僅確保你的對象保持活力和GC安全的,但他們沒有被GC四處移動。
看一看: http://dotnet.dzone.com/news/net-memory-control-use-gchandl