Преобразование Intptr в размер ⇐ C#

Место общения программистов C#
Anonymous
Преобразование Intptr в размер

Сообщение Anonymous »

У меня есть IntPtr, представляющий адрес памяти. Есть ли простой способ определить размер байтов, расположенных по адресу памяти, на который указывает IntPtr, в C#?
Я пытался создать цикл, но это приводит к нарушению доступа без создания результат.
РЕДАКТИРОВАТЬ:
Это было неправильно закрыто. У МЕНЯ НЕТ БИТМАРА, У МЕНЯ ЕСТЬ INTPTR. НИГДЕ В МОЕМ ВОПРОСЕ НИЧЕГО НЕ СПРАШИВАЛО О БИТМАТЕ!!!
вместо того, чтобы вернуться как int, вернул void и написал в поток. Записывает данные в файл, но нарушение доступа все равно происходит даже при попытке/перехвате.
Я могу это сделать, зная размер, но на неизвестном Scan0 я могу получить результат, но не без нарушения доступа. Если бы нарушение прав доступа было обнаружено, я мог бы заранее определить размер.
public record struct MemoryPointer(IntPtr Scan0, int Size)
{
public async Task Save(string filePath)
{
byte[] bytes = new byte[Size];
using Stream stream = File.Create(filePath);
unsafe
{
byte* pointer = (byte*)Scan0;
for (int index = 0; index < Size; index++, pointer++)
{
bytes[index] = *pointer;
}
}
await stream.WriteAsync(bytes);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... tr-to-size

Вернуться в «C#»