Различные результаты при запуске программы с Valgrind с (вне) с использованием массива - PullRequest
1 голос
/ 22 марта 2019

Я создаю программу, ориентированную на производительность для школьного проекта, и поэтому я решил профилировать использование памяти моей программой.

Для этого я использовал Valgrind, как с, так и безМассив инструмент.Результаты использования каждого теста приведены ниже:

Запуск valgrind --leak-check=full -v ./main дал мне вышеуказанный вывод.Хорошо, понял, в общей сложности около 67 МБ использования кучи, верно?

enter image description here

enter image description here

Но затем я захотел узнать, сколько памяти было выделено моей программой во время выполнения, поэтому я немного покопался и нашел инструмент Massif, который именно это и делает.

Таким образом, я запустил valgrind --tool=massif ./main, а затемms_print massif.out.<pid>, в котором <pid> - это идентификатор процесса, который сейчас мертв, который выполнил мою программу.Это дало мне вывод, показанный на рисунках 2 выше.

Итак, мой вопрос: как может быть, что общее использование кучи составляет около 67 МБ, но Massif говорит, что в определенный момент оно достигло пика в 109,9 МБ?

1 Ответ

1 голос
/ 22 марта 2019

Массив дает 2 числа для количества выделенных байтов:

  • «Логическое число» байтов, выделенных вашей программой.
  • «накладные расходы»

Каждый блок, выделенный вашей программой, подразумевает определенные издержки, например, из-за Выравнивание / заполнение. В списке моментальных снимков столбец Полезная куча (B) показывает, какая у вас программа просил. Дополнительная куча (B) показывает накладные расходы.

109 МБ - это полезная + дополнительная куча.

Вы можете настроить накладные расходы, используя --heap-admin = size

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...