删除用第一个指针和元素数定义的uint8_t数组
Deleting a uint8_t array defined with first pointer and number of elements
我正在从我的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);
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 将具有不同字段的结构转换为 uint8 的数组
- UINT8数组对INT64的质量化失败,但应该起作用
- 将 UInt8 C++值转换为 C# 字节数组
- C 具有 uint8 数组奇怪行为的结构
- 正在从numpy.uint8的数组中提取无符号字符
- Jagged Uint8数组转换为C#字节
- 我如何将bitset转换为字节/uint8数组
- 转换uint8字节数组到任何WPF渲染对象
- 将UINT32值转换为UINT8数组[4]
- 将uint8的数组传递给函数会减小其大小(c++代码)