Как обнаружить неинициализированную память (C ++, windows, VS2005)? - PullRequest
0 голосов
/ 20 сентября 2011

Я ищу отладчик памяти для Windows, который сможет отлаживать неинициализированную память.

Существует фрагмент кода (C ++):

class Temp{
public:
 Temp(double d) : m_double(d){};

 double m_double;
 float m_float;
};

int _tmain(int argc, _TCHAR* argv[])
{
 double temp;
 std::cout << temp <<std::endl;

 Temp temp2(2.0);
 std::cout << temp2.m_double <<std::endl;
 std::cout << temp2.m_float <<std::endl;

 int num1, num2;
 num1 = num2 + 1;

 return 0;
}

Желаемые функции:

  • динамический отладчик памяти, а не инструмент статического анализа
  • GUI
  • free
  • интеграция с VS2005
  • простой в использовании

Пробовал использовать:

  • Сборка Rational Purify v.7.0.0.0: 6274
  • Memory Validator v.5.12
  • cppcheck - работало нормальнодля данного фрагмента, но не помогло в действительно большом проекте

UPD: кажется, что нет способа найти неинициализированную память в режиме выпуска с оптимизацией, включенной с помощью динамического отладчика памяти.Собираюсь попробовать в режиме отладки.

Ответы [ 2 ]

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

Я думаю, что эта проблема больше связана со статическими анализаторами кода.Я видел такие предупреждения от Visual Studio с максимальным уровнем предупреждений в настройках проекта, но я не уверен насчет vs2005.

Вы также можете попробовать использовать некоторые инструменты из этого вопроса об анализаторах кода.

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

В прошлом я использовал Purify для всех видов проблем с памятью, и он работает довольно хорошо.Недостатком является то, что это $$$$.

Если это вообще возможно, использовать Linux-порт бэкэнда для использования valgrind, который также является отличным инструментом.

...