Ошибка RtlValidateHeap: new [] необходимо удалить [], но DEBUG_NEW необходимо удалить в VC ++ 2013 express

Я пытаюсь получить старый код из VC ++ 6, работающий в VC ++ 2013 Express. Прыгнув через много обручей для использования MFC с Visual Studio 2013 Express (загрузите старую версию WDK / DDK, чтобы получить MFC, исправьте ошибки в заголовочных файлах и т. Д.), Я его компилирую, но получаю ошибку «Неверный адрес, указанный для RtlValidateHeap», когда Бег.

Оказывается, это связано с путаницей между «удалить» и «удалить []». Старые версии VC ++, похоже, не возражали против того, какой путь удалять удаленные массивы, но VS2013 делает. Но что еще хуже, если вы используете DEBUG_NEW, то есть «#define new DEBUG_NEW» находится рядом с началом ваших файлов C ++, то он переключает то удаление, которое вам нужно использовать!

Для меня new [] должно совпадать с delete [], когда не используется DEBUG_NEW, но delete (без []) должно использоваться при использовании DEBUG_NEW! Если нет, я получаю эту ошибку во время выполнения снова.

Это связано с использованием старой версии DEBUG_NEW из старой версии MFC? Версия Express не предоставляет MFC, поэтому я не могу просто использовать новую версию.

Как я могу использовать DEBUG_NEW и сопоставить new [] и delete [] (как требуется, когда DEBUG_NEW не активен)?

Спасибо,
Роб.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]