Как создать PChar в .NET и передать в WIN32 ?
От: dmitriyku_narod  
Дата: 08.12.11 10:54
Оценка:
Как создать динамический массив byte* и указатель на него выдать внешнему приложению?

Пишу библиотеку dll на C# (.NET), которая подключается к WIN32-приложению.
Требуется сформировать нультерминальную однобайтовую строку в .NET-библиотеке и передать WIN32-приложению. Блок памяти надо освободить уже в WIN32-приложении.

Проблема в том, что не вижу способа в .NET динамически выделить блок памяти, указатель на который можно было бы отдать наружу.

byte[] arr = new byte[10]; не годится, т.к. это создание динамического массива в куче, он будет уничтожен сборщиком мусора (рано или поздно), после выхода из функции, и я не смогу освободить эту память в WIN32-приложении.

byte* arr = stackalloc byte [11]; тоже не годится, т.к. память освободится сразу при выходе из блока, хоть и создается не в куче, а в стеке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.