(Нет) Указатель Регулировка разрушает мой день и кучу? (C ++) - PullRequest
0 голосов
/ 01 июня 2011

-edit2- Я шел по неверному пути.Я решил эту проблему, исправив одну опечатку и добавив одну строку, чтобы исправить упущение, которое позволило мне записать 4 байта во многие по массиву.

-edit- возможно, я иду по неправильному пути.Может быть, VS показывает мне неверные данные, но все равно выполняет код правильно (ведь мой код показывает правильное имя).Но я понятия не имею, откуда еще могло произойти мое повреждение кучи.

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

Я изучил что-то, и это то, что я заметил.У меня есть класс по адресу 0x00216e98.В моих часах я могу видеть данные правильно, и ниже вы можете увидеть имя ptr 21bc00.Я возвращаю ptr как базовый класс (давайте назовем его Base), который вставляется в deque.Как вы можете видеть в deque (ls), он имеет один элемент, и первый элемент - правильный указатель (я думал, что он может корректироваться, но я думаю, что нет. Но, возможно, это так ...).

Однако члены, которые он содержит, являются ПОЛНОСТЬЮ НЕПРАВИЛЬНЫМИ. Cdcdcd00 не похож на правильное имя ptr для меня и не соответствует ptr ниже.Также, когда мой код запускается, я как-то получаю правильное имя и так далее, так что я не знаю, что происходит / неправильно.Это может быть волшебство dynamic_cast, но в любом случае, если я все еще собираю правильные данные, я не знаю, как я повреждаю кучу (как в gcc, так и в msvc).Однако, как я уже сказал, я все еще проверяю правильные данные и не использую виртуальный с базой.

enter image description here

Ответы [ 2 ]

1 голос
/ 01 июня 2011

В режиме отладки cdcdcdcd равен удалено неинициализированной памяти, которую помечает для вас куча отладки.

Если вы видите это, вы используете указатель на удаленную структуру. память, которая была выделена, но никогда не давала значение.

1 голос
/ 01 июня 2011

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

...