在Windows平台上,是否可能由非托管代码(C++/C)写入一个内存区域,然后由托管的.Net代码(C#)(分离的进程)访问该内存区域?我有一个C程序正在将数据写入循环内存缓冲区,我想使用非托管代码处理该缓冲区。
如果您正在寻找一种解决方案,使未管理的进程和托管进程可以共享内存,则可以使用.NET 4.0中引入的MemoryMappedFile类。
如果您想在同一进程中在未管理的代码和托管代码之间共享内存,则可以使用GCHandle
将托管数组固定在内存中,并将其传递给可以访问它的未管理的代码。