0
我正在爲C++/CLI函數創建.NET包裝類。該函數在內部使用了一個整數(int*
),但我想在.NET端公開一個乾淨的List<int>^
。我正在使用以下代碼將C#List轉換爲C++非託管列表int。將列表轉換爲C++/CLI的非託管陣列
除了我沒有使用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;
}