【发布时间】:2011-02-08 13:34:24
【问题描述】:
我正在用 C# 编写一个使用 C++ 库的程序,出于某种原因,我需要分配一个非托管缓冲区以将其传递给库。有没有办法在 c# 中做到这一点? 基本上我只需要在 C# 中做一个 malloc...
谢谢
【问题讨论】:
-
@John Saunders:我不知道这是否可靠,因为不能保证托管内存是连续的。您可能还想固定它以防止 GC 在使用时移动它。
-
@Joshua 嗯?托管内存在很大程度上保证是连续的。不能保证会一直呆在同一个地方,但是当它出现时,它是连续的,并且有
fixed可以保持稳定。 -
另一方面,如果你将缓冲区传递给一个函数并且 C++ 程序在它返回时完成了它,你可以使用 pinvoke,传入一个 byte[] 并让编译器处理剩下的交给你。