Valgrind используется в разработке C ++? - PullRequest
5 голосов
/ 26 октября 2010

Я довольно новичок в C ++, но у меня есть некоторые базовые знания C. В моих прошлых C (университетских) проектах я использовал Valgrind для проверки на наличие утечек памяти.

Теперь, с C ++, является ли Valgrind допустимым инструментом? Страдает ли C ++ такими же проблемами с утечками памяти, как C? Или есть еще лучшие инструменты для использования в сочетании с C ++?

Ответы [ 7 ]

8 голосов
/ 26 октября 2010

Я никогда не использую new и delete (или другие формы ручного управления памятью), и очень редко даже использую указатели. И мне все же приходится бороться с утечками памяти недопустимым доступом к памяти. 1 Valgrind - незаменимый инструмент для меня. Даже важнее gdb.


1 Как отметил Виктор в комментарии, производить утечки памяти без ручного управления памятью было бы довольно странно (исключая циклические ссылки и другие особые случаи).

4 голосов
/ 26 октября 2010

Хотя C ++ имеет намного лучшую обработку памяти, чем C, все еще вполне возможно испортитьУмные указатели великолепны, но с ними можно ошибаться.Вот для чего нужен Вальгринд.

4 голосов
/ 26 октября 2010

Valgrind может использоваться для проверки memleaks в C ++ также

В valgrind есть так много опций, которые дадут вам информацию, и вы также можете изучить callgrind.

- Приветствия

2 голосов
/ 26 октября 2010

не забудьте указать среде выполнения gcc не использовать свой собственный пул памяти, иначе вы перепутаете valgrind

GLIBCPP_FORCE_NEW = 1

2 голосов
/ 26 октября 2010

Утечки памяти являются проблемой для меня, как разработчика C ++.Я предполагаю, что они также беспокоят других разработчиков, хотя я не могу говорить за всех.Valgrind - фантастический инструмент в этом пространстве, без которого я не смог бы жить.

1 голос
/ 26 октября 2010

да, это так.

Я использую динамическое выделение по умолчанию в модульных тестах (с автоматическими указателями или идиоматическим эквивалентом), чтобы явно проверить дополнительные ошибки памяти, которые может обнаружить valgrind.valgrind, guardmalloc, leaks и т. д. могут перехватить много ошибок, прежде чем ввести производственный код.

1 голос
/ 26 октября 2010

Valgrind - лучший инструмент для устранения ошибок памяти (но проверяйте другие модули помимо memcheck).

Программирование в стиле C - это правильный (и широко используемый) подход к программированию в C ++, поэтомуда, проблемы с памятью все еще остаются проблемой.

...