Как обращаться к памяти на C#?

в паскале есть массивы для прямого доступа к памяти Mem, MemL, и MemW
есть ли такое в C#? если есть то как?
  • Вопрос задан
  • 659 просмотров
Пригласить эксперта
Ответы на вопрос 3
mourr
@mourr
Passionate JS developer
В C# есть отличный unsafe, который разрешает делать базовые операции с памятью, типа malloc, memcpy итд - реализуется это все через P/Invoke - вызов Managed кодом Unmanaged функций (например HeapAlloc-HeapFree из kernel32, для работы с памятью, да и любое другое unmanaged безобразие в контексте managed сборки)
Вот пару ссылочек по теме
Работа с памятью напрямую (malloc в C#)
Механизм Platform/Invoke
Ответ написан
@SZolotov
разрабатываю на Xamarin,WPF,Qt, Asp.net
Гуглите про работу с указателями в C#
Ответ написан
gaussmake
@gaussmake
недорадиолюбитель с плюсами и друпалом
Если вы о прямой работе с ней - никак. Прямой доступ к памяти из managed вообще не реализуется (но, вероятно, есть обходные пути) и даже если это реализовать - будет ограничен выделенной процессу памятью.
Как вариант, можно найти или сделать свой драйвер (ЕМНИП, у них нет ограничений по вмешательству в память, а если есть - то менее строгие). Тогда рисуется примерно следующая схема :

- драйвер создаёт "файл устройства" (как правильно называть их в винде - не в курсе)
- мониторит обращения к нему на предмет определенных команд
- ваша программа отдаёт команды драйверу.

upd. про не реализуется - загнул, однако. Гуглите в сторону unsafe
upd2. если не секрет - то для чего понадобилось?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы