-edit2- Я шел по неверному пути.Я решил эту проблему, исправив одну опечатку и добавив одну строку, чтобы исправить упущение, которое позволило мне записать 4 байта во многие по массиву.
-edit- возможно, я иду по неправильному пути.Может быть, VS показывает мне неверные данные, но все равно выполняет код правильно (ведь мой код показывает правильное имя).Но я понятия не имею, откуда еще могло произойти мое повреждение кучи.
Я не заметил каких-либо проблем или неправильных данных.Но я заметил случайные сбои и предположения, что это вызвано повреждением кучи.
Я изучил что-то, и это то, что я заметил.У меня есть класс по адресу 0x00216e98.В моих часах я могу видеть данные правильно, и ниже вы можете увидеть имя ptr 21bc00.Я возвращаю ptr как базовый класс (давайте назовем его Base), который вставляется в deque.Как вы можете видеть в deque (ls), он имеет один элемент, и первый элемент - правильный указатель (я думал, что он может корректироваться, но я думаю, что нет. Но, возможно, это так ...).
Однако члены, которые он содержит, являются ПОЛНОСТЬЮ НЕПРАВИЛЬНЫМИ. Cdcdcd00 не похож на правильное имя ptr для меня и не соответствует ptr ниже.Также, когда мой код запускается, я как-то получаю правильное имя и так далее, так что я не знаю, что происходит / неправильно.Это может быть волшебство dynamic_cast, но в любом случае, если я все еще собираю правильные данные, я не знаю, как я повреждаю кучу (как в gcc, так и в msvc).Однако, как я уже сказал, я все еще проверяю правильные данные и не использую виртуальный с базой.