Здравствуйте, Melamed, Вы писали:
M>Привет M>Я написал программу. В Debug-версии программы все работает нормально. Начал готовить программу сдачи. Сделал Reliase версию моей программы и на одном из тестов она стала падать. Провел тот же тест с Debager-версии, программа работает нормально.
M>Выдает ошибку nhandled exception at at 0x75A3C42D in ConvertArchiv.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x10DFF090.
M>По внешним признакам ошибка происходит в довольно объемной процедуре. Нужно локализовать ошибку и принять решение об исправлении ошибки.
M>Среда обработки MSVS 2012 C++ голый win API + библиотека ZipArchive
А вот я однажды в MSVC-2003 именно в релизе поймал глюк, который никто не смог объяснить порчей памяти или неинициализированными переменными.
Я долго пытался понять, почему объект создаётся корректно, а сразу после передачи в другую функцию объект превращался в груду мусора. Я нашёл место, где происходит что-то странное, внимательно изучил асмовыхлоп... Короче, суть в том, что компилятор насоздавал на стеке временных объектов, повызывал их методы, а потом в другую функцию кинул ссылку на этот временный объект, но с неправильным смещением относительно верхушки стека (ну то есть типа записал в регистр esp-12 вместо esp-8, как-то так).
У меня даже асмокод где-то сохранился.
Мне сказали, что такое бывает.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте