C ++ - обнаружение доступа вне диапазона - PullRequest
3 голосов
/ 21 сентября 2011

Я хотел бы проанализировать мой код C ++, чтобы найти плохой доступ к векторам и массивам (вне доступа), есть ли инструмент для этого?

заранее спасибо

Ответы [ 4 ]

10 голосов
/ 21 сентября 2011

Вы можете скомпилировать с _GLIBCXX_DEBUG и _GLIBXX_DEBUG_PEDANTIC, определенными, если вы используете gcc. Это позволит выдавать утверждения glibc, если запрошен доступ за пределы.

Тестирование с помощью valgrind :: memcheck также выявляет плохие чтения из памяти

6 голосов
/ 21 сентября 2011

Да: Valgrind .

и многие другие: http://en.wikipedia.org/wiki/Memory_debugger.

Обратите внимание, что большинство реализаций, например, std::vector имеет режим отладки, в котором они будут выполнять проверку границ во время выполнения.

2 голосов
/ 21 сентября 2011

Есть несколько платных инструментов, которые делают статический анализ :

часовая работа

Coverity

IBM Rational Purify выполняет динамический анализ.

0 голосов
/ 21 сентября 2011

создайте класс для ваших массивов и создайте некоторые управляющие функции в этом классе с операторами и .... затем используйте этот класс.

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