Почему при выделении памяти VirtualAlloc() в диспетчере задач не происходит скачок?24.10.2020, 01:54. Показов 15495. Ответов 79
Метки нет (Все метки)
Для эксперимента я прошу примерно 50 байт, может немного больше.
Если так.
VirtualAlloc специфическая функция, вполне возможно что она даже не выделяет память а резервирует или выделяет её на жёстком диске.Может ли она выделять физическую память? Какой флаг лучше использовать MEM_TOP_DOWN или MEM_COMMIT?Добавлено через 1 минуту Почему в VirtualFree передаём размер памяти 0 чтобы её освободить?
0
|
|||||||||||
| 24.10.2020, 01:54 | |
|
Ответы с готовыми решениями:
79
Почему происходит ошибка при выделении памяти под массив? Что происходит за кулисами при выделении памяти для переменной?
|
|
Модератор
|
|
| 25.10.2020, 17:59 | |
|
Это не тот показатель, который Ваша программа может самостоятельно контролировать.
Хотя, конечно, своими действиями или бездействием может косвенно побудить менеджер памяти ОС выделять и освобождать страницы физической памяти.
0
|
|
| 31.12.2020, 02:29 [ТС] | ||
VirtualAlloc() тоже выделяет виртуальную страницу как резервную и при этом не проецирует на физическую, а проецирует после когда эта память начинает использоваться(грубо говоря)?
0
|
||
|
Модератор
|
|
| 31.12.2020, 07:03 | |
|
В системах с виртуальной памятью страницы виртуальной памяти процесса обычно проецируются на физическую по page fault'у при попытке обращения к этим страницам.
Как те страницы, в которых загрузчик разместил исполняемые инструкции и данные программы при загрузке исполняемого объектного файла, так и те, которые программа позже попыталась выделить с помощью таких функций, как malloc().Если спроецированная страница долго не используется, то ОС при необходимости может освободить физическую страницу, предварительно сохранив содержимое во "внешнее" хранилище, если процесс успел изменил её содержимое. Небольшие участки физической памяти можно выделить с помощью специальных платформозависимых функций. Обычно прикладные программы этого не делают.
0
|
|
|
|
||
| 31.12.2020, 09:27 | ||
|
пользователь оперирует только виртуальной памятью - и обертки в виде VirtualAlloc и Nt заглушки, всё это юзерские функции. управление ядру передаётся после syscall (int 2e), и там уже функции типа Mm обращаются к озу.
1
|
||
| 31.12.2020, 19:42 [ТС] | ||
|
1
|
||
|
Модератор
|
||||||||||||
| 14.01.2021, 21:24 | ||||||||||||
0
|
||||||||||||
| 12.06.2021, 00:39 [ТС] | |||||||
|
Значит есть какаета функция которая говорит системе что память захвачена, чтобы диспетчер памяти всё выел как надо? Если в страницах которые будут даны вызовом функции памяти хватит то нужно увидеть это как-то в диспетчере задач что произошёл скачок. Вот полезная функция GetPerformanceInfo она заполняет структуру там указывается сколько страниц осталось и т.д. а вот в байтах считает
0
|
|||||||
|
Модератор
|
||||||
| 12.06.2021, 09:52 | ||||||
0
|
||||||
| 12.06.2021, 19:57 [ТС] | |||
new то в диспетчере задач можно увидеть что система потребляет больше памяти.Если ВиртуалАлок то такого скачка не происходит. А что будет с функцией NtAllocateVirtualMemory?
0
|
|||
|
Модератор
|
||||||||||||
| 15.06.2021, 13:26 | ||||||||||||
0
|
||||||||||||
| 15.06.2021, 15:15 [ТС] | ||
|
У Меня new и maloc дают скачок, ВиртуалАлок нет. Если я правильно понял виртуальная память возникает на ЖД а потом по возможности переносится в ОЗУ. Может не так понял.
0
|
||
|
Модератор
|
||||||
| 15.06.2021, 21:24 | ||||||
|
Если не получается настроить сборку, можно подложить свои new-delete, которые не вызывают библиотечные
malloc***(), чтобы понаблюдать за скачками.
0
|
||||||
|
Модератор
|
|||||||||||
| 17.06.2021, 13:42 | |||||||||||
|
Видно, как во время работы процесса со статическим массивом для него по pagefault'ам выделяются страницы физической памяти.
0
|
|||||||||||
| 17.06.2021, 15:32 [ТС] | ||
|
Как освободить память/(страницы) запрошенную функцией NtAllocateVirtualMemory?
0
|
||
|
Модератор
|
||
| 17.06.2021, 17:46 | ||
|
При этом общее число используемых страниц останется примерно тем же. Поэтому, нужно следить за рабочими наборами ( WorkingSet ) исследуемых процессов ( GetProcessMemoryInfo() https://docs.microsoft.com/en-... -a-process), а не только за общим объёмом выделенной памяти в системе (GlobalMemoryStatusEx() https://docs.microsoft.com/en-... rystatusex).
0
|
||
| 17.06.2021, 17:46 | |
|
Помогаю со студенческими работами здесь
40
При закрытом диспетчере задач процессор грузится до 60-100%, при открытии диспетчере падает до 10% Загруженность памяти в диспетчере задач
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|