Есть ли способ измерить использование памяти во время выполнения программы на c ++? - PullRequest
3 голосов
/ 12 июля 2020

Обычно я занимаюсь соревновательным программированием и хочу проверить (локально), сколько памяти используется моей программой во время выполнения. Я бы хотел измерить это с помощью другой программы. Есть ли способ сделать это? Если да, могу ли я получить код? Здесь довольно запутано.

Было бы лучше, если бы был независимый от платформы способ.

1 Ответ

2 голосов
/ 12 июля 2020

К сожалению, независимого от платформы способа не существует. Если вы хотите измерить использование памяти вне программы, не меняя ее код, тогда вам необходимо использовать специальные c инструменты ОС.

В Linux: В Linux, как узнать сколько памяти используют процессы? . По сути, он говорит вам разобрать /proc/{the process id of the running program}/smaps. Вариант этого может работать в других системах с файловой системой /proc/.

В Windows: Как использовать GetProcessMemoryInfo в C ++? . Для этого требуется HANDLE процесса, который вы можете получить с помощью

handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 
                     FALSE, process_id);
PROCESS_MEMORY_COUNTERS couters;
GetProcessMemoryInfo( handle, &counters, sizeof(counters));
CloseHandle(handle);

now do something with counters ....
               
...