2010-07-08 2 views
1

При удалении указателя я получаю ошибку куча повреждения. Для этого проекта для параметра привязки для рандомизированного базового адреса установлено значение «Отключить рандомизацию изображения». Не уверен, почему это так. Во всяком случае, я получаю эту ошибку только в том случае, если включен конкретный заголовочный файл библиотеки. Странно то, что даже если этот заголовочный файл включен, если для рандомизированного базового адреса установлено значение «Включить рандомизацию изображения», ошибка не появляется. Так действительно ли существует кучевое повреждение или мне нужно просто изменить параметр привязки?Ошибка повреждения кучи при удалении указателя

+1

Любой шанс, что вы удаляете базовый указатель? Если это так, убедитесь, что базовый класс определяет виртуальный dtor. – stinky472

+2

Обычно это (и почти всегда) проблема с кодом, а не с настройками компилятора или системными заголовками. Вероятно, вы где-то переписывали какую-то память, и, случайно, она не попала в критические части системы, если не включать определенные заголовки или использовать определенные настройки компилятора. Дополнительная информация, такая как примеры кода, будет полезна здесь. – 5ound

+5

Отправьте код для этого класса. –

ответ

2

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

Почти наверняка в вашем проекте есть проблема с кучей и, скорее всего, она не связана с включенным заголовком. Скорее всего, заголовок вводит некоторый символ, который использует поврежденную кучу, вызывая проблему. Аналогично, при рандомизации базового адреса ваша куча все еще повреждается, но проблема никогда не проявляется явно очевидным образом (хотя вещи могут работать немного неправильно).

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

В противном случае, к сожалению, без кода/дополнительной информации будет очень сложно дать вам дополнительные подсказки.

Смежные вопросы