删除使用第一个指针和元素数定义的uint8_t数组

时间:2015-11-24 14:25:32

标签: c# c++ arrays pointers

我在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 ++并不擅长。

1 个答案:

答案 0 :(得分:-1)

您可以使用Marshal.FreeCoTaskMem方法:

Marshal.FreeCoTaskMem(InputArray);