0
C++/CLI 함수에 대한 .NET 래퍼 클래스를 만듭니다. 내부적으로이 함수는 int 배열 (int*
)을 사용하지만 .NET 측에서 깨끗한 List<int>^
을 노출하고 싶습니다. 다음 코드를 사용하여 C# List를 int의 C++ 비 관리 목록으로 변환합니다.목록을 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;
}