【发布时间】:2013-03-28 19:34:37
【问题描述】:
我正在为 C++/CLI 函数创建一个 .NET 包装类。该函数在内部使用整数数组 (int*),但我想在 .NET 端公开一个干净的List<int>^。我正在使用以下代码将 C# List 转换为 C++ 非托管 int 列表。
除了我没有使用Marshal::FreeHGlobal 释放分配的内存之外,这个函数有什么问题吗?例如,我是否应该为数组长度字节分配((count * 4) + 4)?
static int* ListToArray(List<int>^ list){
// new array
int count = list->Count;
int* arr = (int*)(Marshal::AllocHGlobal(count * 4).ToPointer());
// convert list to array
for(int a = 0; a < count; a++){
arr[a] = list[a];
}
return arr;
}
【问题讨论】:
标签: c# .net list visual-c++ c++-cli