Tag: 解组

从原生到托管执行自定义编组(ICustomMarshaler)时如何正确释放内存?

我的主要应用程序是在C#中,我现在正在尝试编写一个DLL(用于输入输出),它应该是可移植的(在C或C ++中用于Windows和Linux),并且可以从其他C ++应用程序和我的主要C#应用程序访问。 虽然在我的DLL中我使用C ++来使我的生活更轻松,但我在界面中使用C风格的方法,即我的标题中有外部的“C”{/ *方法* /}。 我认为这比使用C ++ / CLI包装更好(希望这是正确的选择,因为我已经足够了,但我很高兴听到你对这个问题的建议)。 现在在我的本机DLL中,我有结构,其中包含其他几个结构和数组。 我通过以下示例简化(很多): typedef struct AStructNative{ size_t length, void* bstructs; }AStructNative; typedef struct BStructNative{ int16_t a; int16_t b; }BStructNative; 和C#同行: public class AStruct { BStruct[] array; } public struct BStruct { short a; short b; } 我使用ICustomMarshaler , AStruct (1)可以传递给本机DLL(写入时)或(2)可以从DLL获取(回读时)。 我认为我在案例(1)中取得了成功(至少它有效)。 现在,我不清楚案例(2)的正确程序。 在本机DLL上,我有类似于: void ReadAStruct(AStructNative […]