У меня есть программа, которая вызывает повреждение памяти при отладке, но отлично работает в выпуске. Чтобы добавить странности, программа выполняет свою функцию до «сбоя» (она сохраняет данные в файл). Может ли это означать, что Visual Studio просто не нравится моя программа, или это означает, что у меня есть серьезная ошибка, которую мне нужно исправить? В общем случае, если происходит сбой режима отладки, это всегда означает, что есть проблема с программой, или возможно, что есть просто проблема с тем, как программа работает в режиме отладки, поэтому мне не стоит слишком беспокоиться?
Это почти наверняка ошибка в вашем приложении, которая потребует отслеживания и исправления.
Есть много типов ошибок, которые приводят к неопределенное поведение. Некоторые типы неопределенного поведения (такие как повреждение памяти) могут проявляться как кажущиеся случайными сбои, которые происходят намного позже в программе, чем ошибка, которая их вызвала.
В режиме отладки Visual Studio делает все возможное, чтобы такие сбои возникали как можно раньше и были как можно более заметными. В режиме релиза основное внимание уделяется производительности.
Есть хорошее резюме некоторых различий между отладкой и выпуском в https://stackoverflow.com/a/312352/367273
Нет, это не хорошо. Скорее всего, это означает, что некоторая переменная или указатель не инициализированы. В режиме отладки такие неинициализированные значения часто имеют значение по умолчанию 0, в то время как такие значения по умолчанию не используются в коде выпуска (оптимизированном).
Это означает, что у вас есть серьезная ошибка, которую нужно исправить. Наиболее вероятная причина в том, что вы используете неинициализированные переменные. В VS это самая распространенная причина того, что программы работают по-разному при отладке и выпуске.