Как создать динамический массив byte* и указатель на него выдать внешнему приложению?
Пишу библиотеку dll на C# (.NET), которая подключается к WIN32-приложению.
Требуется сформировать нультерминальную однобайтовую строку в .NET-библиотеке и передать WIN32-приложению. Блок памяти надо освободить уже в WIN32-приложении.
Проблема в том, что не вижу способа в .NET динамически выделить блок памяти, указатель на который можно было бы отдать наружу.
byte[] arr = new byte[10]; не годится, т.к. это создание динамического массива в куче, он будет уничтожен сборщиком мусора (рано или поздно), после выхода из функции, и я не смогу освободить эту память в WIN32-приложении.
byte* arr = stackalloc byte [11]; тоже не годится, т.к. память освободится сразу при выходе из блока, хоть и создается не в куче, а в стеке.