c#托管代码和非托管代码之间的共享内存

时间:2011-02-21 19:58:31

标签: c# .net windows

是否可以在Windows上为非托管代码(c ++ / c)写入内存中的某个区域,然后由托管的.Net代码(c#)访问(单独的进程)我有一个将数据写入循环的ac程序内存缓冲区,我想用非托管代码处理缓冲区。

4 个答案:

答案 0 :(得分:4)

如果您正在寻找非托管进程和托管进程可以共享内存的解决方案,那么您可以使用MemoryMappedFile class(在.NET 4.0中引入)。

如果您希望在相同的进程中共享无管理代码和托管代码之间的内存,那么您可以使用GCHandle将托管数组固定在内存中,并将其传递给非托管代码可以访问它的代码。

答案 1 :(得分:3)

我认为你正在寻找Marshaling

答案 2 :(得分:1)

是的,请查看unsafefixed个关键字。

答案 3 :(得分:1)

是的,

你应该使用Marshall课程,尤其是Marshal.AllocHGlobal.