Как всем известно, среда выполнения Visual C ++ помечает неинициализированные или просто освобожденные блоки памяти специальными ненулевыми маркерами. Есть ли способ полностью отключить это поведение, не устанавливая вручную всю неинициализированную память в нули? Это вызывает хаос с моими действительными ненулевыми проверками, так как 0xFEEEFEEE != 0
.
Хм, возможно, мне следует объяснить немного лучше. Я создаю и инициализирую переменную (через new), и все это идет отлично. Когда я освобождаю его (с помощью удаления), он устанавливает указатель на 0xFEEEFEEE
вместо NULL
. Когда я вставляю правильную проверку для NULL
, как должны делать все хорошие программы, которые управляют собственной памятью, я сталкиваюсь с проблемами, когда 0xFEEEFEEE
проходит проверку NULL
без проблем. Есть ли хороший способ, кроме ручной установки всех указателей на NULL
при их удалении, определить, когда память уже была освобождена? Я бы предпочел не использовать Boost просто потому, что я не хочу накладных расходов, хотя они могут быть небольшими, поскольку это единственное, для чего я буду использовать Boost.