Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502

MapViewOfFile выход за пределы проекции

23.03.2020, 23:09. Показов 1313. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Использую MapViewOfFile для создания проекции файла.
И вот возник у меня вопрос, почему я могу считать данные которые находятся за пределами проекции,
то есть превышают размер спроецированного файла.
Допустим размер файла 100 байт,
Я копирую данные из проекции в буфер размером 102 байта.
В обычном варианте я по идее должен получить ошибку исключение, однако в проекции я получаю лишние два байта акуратно заполненные нулями, почему??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2020, 23:09
Ответы с готовыми решениями:

Выход за пределы
Как сделать так, чтобы кнопки не выходили за пределы блока фиксорованной ширины, а скажем делились по 5 кнопок в 1 ряду?

Выход за пределы массива
в одном из обучающих видео уроков наткнулся на ТАКОЕ. алгоритм sort получает в себя начало и конец массива, далее просто выведится...

Выход за пределы массива
В 7 строке выдает ошибку выхода за пределы массива. Никак не могу понять в чем ошибка def kvadrat(size): width=cell/(size*size*4) ...

5
 Аватар для Alikberov
131 / 116 / 25
Регистрация: 03.05.2017
Сообщений: 337
Записей в блоге: 1
23.03.2020, 23:36
Лучший ответ Сообщение было отмечено zombivadim как решение

Решение

Процессoры - не такое уж чудо, а инженеры - не волшебники…
Архитектурные ограничения управляющих регистров позволяет выделять регионы памяти либо с точностью до байта и не больше мегабайта, либо с точностью до 4096 байтов и размером до 4 Гб.
То есть, имеется бит режима, определяющий совместимость с DOS и 16-битной адресацией до 1 Мб, либо новый защищённый режим, где управляющие биты те же, но память больше в 4096 раз тупым сдвигом «<< 12» на уровне проводников. Отчего и настройка памяти грубее…

P.S.: Парадоксально, но ограничения архитектуры дают фору с лишними ячейками
1
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
24.03.2020, 00:11  [ТС]
Alikberov, То есть теоретически я могу не парится и свободно использовать этот лишний мегабайт, не боясь получить исключение ??
0
 Аватар для Alikberov
131 / 116 / 25
Регистрация: 03.05.2017
Сообщений: 337
Записей в блоге: 1
24.03.2020, 00:18
Цитата Сообщение от zombivadim Посмотреть сообщение
я могу не парится и свободно использовать этот лишний мегабайт, не боясь получить исключение ??
Прo мегабайты - не уверен (давно в Си не заходил), а вот с «try-catch» можно прощупать реальные границы…

Или как-тo так:
Code
1
Размeр_проекции = (размер_файла + 4095) & -4096
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
24.03.2020, 00:26  [ТС]
Alikberov, Спасибо за разъяснение, значит получается что при любом выделение памяти, остается некий безопасный буфер, позволяющий выходить за небольшие пределы заданного размера.
0
 Аватар для Alikberov
131 / 116 / 25
Регистрация: 03.05.2017
Сообщений: 337
Записей в блоге: 1
24.03.2020, 00:41
Цитата Сообщение от zombivadim Посмотреть сообщение
значит получается что при любом выделение памяти, остается некий безопасный буфер
Пoчти, так как при выделении памяти в 4096 байт получим ровно 4096 без запаса.
VirtualAlloc
размер памяти. Но эта величина очень специфичная. Память выделяется блоками по 4096 байт и соответственно указанный размер будет округляться до этого числа. Выделяете память например 10 байт, а получите 4096, а если выделяете например 5000, то будет выделено памяти в 8192 байта. Округление естественно идет в сторону увеличения.
Подобные моменты лично я называю «цифровой бюрократией», когда тебе нужен огород в три сотки, а тебе предлагают гектар!
И ничего здесь не поделаешь! Нельзя открыть миллион файлов по 1 байту - расход будет в 4 Гб,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2020, 00:41
Помогаю со студенческими работами здесь

Выход за пределы вектора
Проблэм: запускается, но после записи символов выдает ошибку, мол, вектор вышел за пределы... Как исправить кто знает? #include...

Выход за пределы экрана
У меня есть объект gluCylinder(quadObj, 0, 15, 40, 10, 10), который я поворачиваю на определенный градус, смещаю, масштабирую...но при...

Выход за пределы массива
Выход за пределы массива, подскажите как исправить чтоб выводился список! package com.example.stracking; import...

Выход за пределы виджета
Доброго времени суток, у меня есть виджета 100x100, я хочу в нем поместить по вертикали три виджета размером 100х50, но видно только два,...

Выход за пределы vector
Не могу понять почему происходит выход за пределы vectora после первого прохождения while. vector&lt;DataPerson&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru