получить утечки между двумя точками, используя valgrind - PullRequest
1 голос
/ 08 апреля 2011

Я использую valgrind для поиска и отслеживания проблем с памятью. Теперь я хочу сделать что-то вроде этого:

before = getValgrindState();
do_something_curious();
after = getValgrindState();
difference = after - before;
std::cout << difference;

Возможно ли что-то подобное с valgrind?

Среда выполнения MS Visual C ++ предоставляет следующие функции:

  • _CrtMemCheckpoint (для сбора текущего состояния выделенной памяти)
  • _CrtMemDifference (для расчета разницы между двумя состояниями)

И я хотел бы знать, есть ли способ реализовать аналогичную функциональность с помощью valgrind.

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Примитивный / деструктивный способ сделать то, что вы хотите, это использовать _exit() (обратите внимание на подчеркивание), чтобы избежать вызова любого из деструкторов.

  • запустить valgrind / memcheck для вашего кода, который вызывает _exit() до do_something_curious();
  • , снова запустить valgrind / memcheck с _exit() после do_something_curious();
  • сравните результаты, чтобы увидеть, что осталось do_something_curious().

[Я не мог понять, как массив будет делать то, что вы хотите (есть ли способ, чтобы массив отслеживать free/ delete операции и согласование с malloc / new операциями, которые я пропустил?)]

0 голосов
/ 08 апреля 2011

Что вы хотите измерить?Какая "разница" должна быть?Если вы хотите проверить использование памяти, попробуйте с помощью инструмента Valgrind massif . Massif Visualizer полезен для интерпретации результатов.

...