Свободное выделение управляемой памяти из неуправляемого кода - PullRequest
1 голос
/ 13 июля 2011

Я хотел бы сделать Marshal.AllocHGlobal в управляемом коде, заполнить его данными и передать этот блок памяти неуправляемому (C ++) коду, который затем будет отвечать за его освобождение.

Под капотомMarshal.AllocHGlobal звонит LocalAlloc (и, наверное, LocalLock).Но для того, чтобы неуправляемый код вызывал LocalFree, ему нужен HLOCAL, возвращаемый LocalAlloc, который Marshal.AllocHGlobal не предоставляет.

Я не обязательно ограничен использованием AllocHGlobal;цель высокого уровня - позволить управляемому коду выделять память для неуправляемого кода, а затем читать и освобождать.

1 Ответ

0 голосов
/ 13 июля 2011

Это не дескриптор, начиная с версии 3. Windows. Вызов LocalFree () для указателя в порядке, как показано в статье Windows SDK .Marshal.AllocCoTaskMem и CoTaskMemFree () - лучшая ловушка для мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...