删除用第一个指针和元素数定义的uint8_t数组
本文关键字:uint8 数组 定义 第一个 指针 元素 删除 | 更新日期: 2023-09-27 18:24:03
我正在从我的c#程序中调用一个c++dll。看起来,一旦一个变量被传递给非托管代码,C#就不想对它做任何事情,结果我的程序正在疯狂地泄漏内存。
这是代码的C#部分:
byte[] bytes = MyData;
int array_lenght = bytes.Length;
DataProcessor(bytes, array_lenght);
数据处理器定义为
[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();
我百分之百肯定有一种非常简单的方法可以做到这一点,但是我不擅长C++。
您可以使用Marshal.FreeCoTaskMem方法:
Marshal.FreeCoTaskMem(InputArray);