c # разделяет память между управляемым и неуправляемым кодом - PullRequest
3 голосов
/ 21 февраля 2011

Возможно ли в Windows для неуправляемого кода (c ++ / c) записать в область памяти, к которой затем обращается управляемый код .Net (c #) (отдельные процессы) У меня есть программа ac, которая записывает данные в циркуляр буфер памяти и я хочу обработать буфер с неуправляемым кодом.

Ответы [ 4 ]

4 голосов
/ 22 февраля 2011

Если вы ищете решение, в котором неуправляемый процесс и управляемый процесс могут совместно использовать память, вы можете использовать класс MemoryMappedFile (представлен в .NET 4.0).

Если вы хотите разделить память между неизмененным и управляемым кодом в том же процессе, то вы можете использовать GCHandle для закрепления управляемого массива в памяти и передачи его в неуправляемый код, который может получить доступ к нему.

3 голосов
/ 21 февраля 2011

Я думаю, что вы ищете Marshaling

1 голос
/ 21 февраля 2011

Да,

вам следует использовать класс Маршалла, особенно Marshal.AllocHGlobal. .

1 голос
/ 21 февраля 2011

Да, посмотрите на небезопасные и фиксированные ключевые слова.

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