【发布时间】:2011-03-09 18:59:50
【问题描述】:
我有一个大型 c 代码库,用于将其结果写入文件。我将其转换为通过 float* 数组将其数据返回到这样的 C++ 程序(以避免常量文件 I/O):
float* mgrib(...)
这在 C++ 中运行良好,我可以“释放”内存。我设法通过以下方式将数据正确导入 C#:
IntPtr pointer = mgrib(...);
float[] result = new float[ size ];
Marshal.Copy( pointer, result, 0, size );
Marshal.FreeCoTaskMem( pointer );
这是一个循环,因为必须从函数中提取许多字段。如果它少于 256 个字段,则效果很好。如果它更多,它会在没有警告的情况下崩溃。如果我通过它正确运行一个文件,然后运行另一个(总计超过 256 个)它会崩溃。我远非 CS 专家,但 256 似乎不仅仅是巧合。
我感谢任何见解。谢谢。
【问题讨论】: