非託管代碼調用我的函數。在第一個函數中,我應該傳回指向我的託管對象的指針。有時後來我的其他一些函數會被同一個指針調用爲其中一個參數。我應該解引用它並使用它來執行一些計算,然後如果不需要處理它。 爲了簡化故事,我需要固定這個對象,以便GC不會移動它,直到我處理它。如何在C#中做到這一點? 在此先感謝。如何將指針固定到C#中的託管對象?
11
A
回答
10
要固定在C#的對象,則可以使用GCHandle.Alloc
方法與第二個參數GCHandleType.Pinned
。對象保持固定狀態,直到使用GCHandle.Free
方法釋放實例GCHandle
。
相關問題
- 1. 如何固定'非託管'指針?
- 2. 如何獲取C#對象上的非託管指針?
- 3. 傳遞非託管的指針非託管對象在託管類C++/CLI
- 4. 指針指向託管C++
- 5. 將本機指針轉換爲C++ \ CLI託管對象引用?
- 6. 傳遞從託管c + +到COM接口指針的指針C#
- 7. 在C#中返回非託管對象指針
- 8. 託管代碼中的指針? C#
- 9. 將本地指針強制轉換爲託管對象
- 10. 如何將C#指針傳遞給非託管DLL?
- 11. 全局或指針託管C++中的自定義類
- 12. C++對象指針
- 13. 如何在C++中檢查託管指針是否無效?
- 14. 無法將指針指向非非託管類型int * C#
- 15. 如何將C#類對象傳遞給C++非託管代碼?
- 16. 如何在C#中創建可以使用指針訪問的非託管嵌套固定長度結構
- 17. 將QQuickItem指針的子類指定給另一個C++對象
- 18. 原始對象的C++指針和複製對象的指針
- 19. 在非託管庫方法中使用託管C++中的指針
- 20. 將非託管傳遞給託管int指針
- 21. 將託管函數指針傳遞爲非託管回調
- 22. 針對特定託管對象進行過濾的謂詞 - Swift
- 23. 銷燬C中的非託管對象#
- 24. Managed C++中託管對象的分配
- 25. 什麼是C++/CLI中的託管對象和非託管對象?
- 26. 在C#中的非託管c + + DLL ... WINAPI和指針
- 27. 如何將指針映射到unordered_map中的對象?
- 28. Boost python,將原始指針與託管指針進行比較?
- 29. 將對象加載到指向對象的指針陣列
- 30. 將對象分配給指針C++
郵一些代碼,優選*最小的,完整*例子。 –
不要釘住。非託管代碼對指針沒有用處。所以不要傳遞一個指針,傳遞一個'句柄'。說一個靜態'List <>'中的索引。現在,您可以簡單地從句柄值中檢索回調中的託管參考。 –