gcroot是什麼意思?我在我正在閱讀的代碼中找到它。gcroot in C++/cli
10
A
回答
15
gcroot是一個C++/cli模板類,它簡化了C++/cli類中的託管類型。
例如,您可以有以下幾種:
class Native {
public:
Native(Object ^obj) :
netstring(obj->ToString()) { // Initializing the gcroot<String ^>
}
~Native() {
}
void Print() {
array<Char> ^chars = netstring->GetChars(); // Dereferencing the gcroot<String ^>
_wprintf("netstring is:");
if (chars->Length > 0) {
pin_ptr<Char> charptr = &(chars[0]);
_wprintf("%s", (wchar_t const *)charptr);
}
}
private:
gcroot<String ^> netstring;
};
gcroot作爲對管理對象或值類型實例的引用和抄襲的對象或值類型實例時,做所有的工作。 通常你需要使用GCHandle和.NET框架的一些C函數。這全部封裝在gcroot中。
9
當.NET垃圾收集器運行時,它通過進行可達性分析來確定哪些對象仍在使用中。在查找指向對象的指針時,只分析託管堆,因此如果您有一個從本地對象指向託管對象的指針,則需要知道垃圾收集器,因此它可以將其包含在可達性分析中,因此它可以如果目標在壓縮過程中移動,則更新指針。根據rstevens的說法,.NET GCHandle
類可以做到這一點,而C++/CLI是面向C++的GCHandle
包裝器,它增加了類型安全性和方便的語法。
相關問題
- 1. 如何使用gcroot
- 2. System.NullReferenceException當使用gcroot
- 3. gcroot沒有任何價值
- 4. 爲什麼Context成爲GCRoot?
- 5. gcroot系列 - 元素訪問
- 6. 爲什麼gcroot返回System ^?
- 7. windbg!gcroot <address>不返回根
- 8. 如何在C++。net中將gcroot <Object^>轉換爲IMyInterface?
- 9. 如何測試NULL或nullptr的gcroot引用?
- 10. in operator in C#
- 11. In-和In TextMate.app
- 12. IN IN JOIN如何?
- 13. In App Purchase in xamarin.forms
- 14. cmpfunc in bsearch()in c
- 15. class in class in java
- 16. JavaFX Text in in Polygon
- 17. Vector3 in Meep in Python
- 18. Array in Array in JSON
- 19. Dictionary for ... in ... in it?
- 20. map3 in scala in Parallelism
- 21. IN
- 22. Flash Builder Profiler用盡java堆空間嘗試擴展到GCRoot的路徑
- 23. 查找gcroot的工作析構函數<Bitmap^> visual studio中的類
- 24. 當一個對象沒有root使用!gcroot和SOS時,這意味着什麼?
- 25. EXC_BAD_ACCESS in device..not in simulator。(Adwhirl)
- 26. map2 in scala in Exeption處理
- 27. concat in FSharp.Core.String vs Concat in System.String
- 28. SELECT IN WHERE ID IN GROUP_CONCAT
- 29. Image in mode mosaic in PdfPCell
- 30. Codeigniter Tank Auth Not Log In In?
1st google鏈接:http://msdn.microsoft.com/en-us/library/481fa11f(v=vs.80).aspx – 2011-02-15 15:05:17