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

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

Сообщение Anonymous »

У меня есть IntPtr, представляющий адрес памяти. Есть ли простой способ определить размер байтов, расположенных по адресу памяти, на который указывает IntPtr, в C#?
Я пытался создать цикл, но это приводит к нарушению доступа без создания результат.
EDIT:
вместо возврата как 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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