Исследование, почему указатель становится плохим (C ++) - PullRequest
1 голос
/ 01 февраля 2012

Часть кода C ++, которую я изучаю в VS 2008, имеет неверный указатель.Указатель инициализирован правильно и имеет очень мало строк кода, ссылающихся на него.Я ставлю часы на этот указатель во время отладки.

Когда вызывается определенный метод, значение указателя внезапно изменяется с 0x05fe0040 "" на 0x00000000 Bad Ptr (в окне просмотра VS2008).Я не видел, чтобы понять, почему это происходит.Нет никаких операций над указателем между строками кода, где он теряет свое значение.

Как мне исследовать это дальше?Каковы возможные причины, по которым этот указатель стал плохим?

Я новичок в программировании на C ++ и впервые использую VS2008, поэтому, пожалуйста, объясните все, что вы считаете уместным.

Ответы [ 2 ]

5 голосов
/ 01 февраля 2012

Если значение не изменяется каким-либо кодом, управляющим переменной, к нему должен обращаться блуждающий / подвесной указатель или переполнение буфера / массива .

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

2 голосов
/ 01 февраля 2012

Возможно, вы получили доступ за пределами индекса массива или некоторой недопустимой памяти (например, неинициализированный указатель) где-то еще и изменили значение переменной указателя.

...