我在C#程序中调用c ++ dll。看来,一旦变量传递给非托管代码,C#就不会想要与它做任何事情,因此我的程序就像疯了一样泄漏内存。
这里是代码的C#部分:
byte[] bytes = MyData;
int array_lenght = bytes.Length;
DataProcessor(bytes, array_lenght);
DataProcessor定义为
[DllImport("Processor", EntryPoint = "DataProcessor")]
public static extern void DataProcessor(byte[] array, int ArrayElementCount);
这是DataProcessor函数的DLL端:
void DataProcessor (uint8_t* InputArray, int ArrayElementCount)
// do some stuff here
现在看来我需要从DLL中删除这个数组(InputArray),但是我无法找到一种方法。我试过像
这样的东西delete *(InputArray + i) // inside a for loop
将数组映射到这样的向量并清除它
std::vector<uint8_t> fckn_vector(InputArray, InputArray + ArrayElementCount);
fckn_vector.clear();
我100%确定必须有一种非常简单的方法来做到这一点,但是我对C ++并不擅长。