У меня есть код в Visual Studio 2008 на C++, который работает с файлами только с помощью fopen и fclose. Все работает отлично в режиме отладки. и я проверил несколько наборов данных. Но он не работает в режиме деблокирования. Он постоянно падает. Я выключил все оптимизации, также там нет зависимости ни к чему (в линкере), а также я поставил эти:Мой код работает в режиме отладки, но не в режиме деблокирования
Оптимизации: Disabled (/ Od) Keep данные без ссылок. Не удалять избыточные Оптимизация для Windows98: NO
Я все еще не понимаю, как это не должно работать в этих условиях. Что еще я должен отключить, чтобы он работал как в режиме отладки?
Я думаю, что если он работает в режиме деблокирования, но не в режиме отладки, это может быть ошибка кодирования, но, наоборот, выглядит странно. не так ли?
Я ценю любую помощь. --Nima
Я проверял дважды, я не вижу таких ошибок. :) – Nima
Еще одна вещь, которую нужно проверить - это возможность того, что буферы, которые вы используете для fread(), достаточно велики. Переполнение буфера может быть допущено в одной конфигурации сборки, но не просто из-за того, как вещи упорядочиваются в памяти и несколько отличаются от использования кучи в debug vs. release. –
Ваш ответ выглядит перспективным, но я не смог найти точное местонахождение проблемы. Попытка отладки в режиме выпуска не помогает, так как она перескакивает некоторые части кода и внезапно падает. И я пробовал строительные леса (накладывая укусы ...), и здесь это происходит: Obj * f (...) { Obj * obj = new Obj (..); ... cout << "1" << endl; return obj; } void main() { Obj * obj = f (...); cout << "2" << endl; } он печатает 1, но не 2! – Nima