C ++ DLL возвращает строковый массив, кто должен выделять память и как? - PullRequest
0 голосов
/ 04 сентября 2018

Я пишу c ++ / cli (warpper-) dll для использования C # Dll в нативном C ++. Одна из функций C #, которую я обертываю, возвращает String-массив неизвестного размера . У меня была идея использовать функцию экспорта следующим образом:

__declspec(dllexport) void someFunc(char*** pStringArray);

Имея в виду идею передать char * -array-указатель на Dll. Dll заполнит переданный массив C # String-array.

Я не знаю размер возвращаемого массива строк, поэтому я не могу выделить память для указателя перед вызовом функции Dll. Хотя это плохо для распределения памяти в куче в Dll, потому что это может легко привести к большой утечке памяти. Если возможно, я хочу избежать очистки памяти другим вызовом Dll.

Каков наилучший способ решения этой проблемы?

Есть ли лучшие способы вернуть массив строк неизвестного размера?

...