Я — программист среднего уровня, пишу программу, которая, вероятно, очень сложна для меня. Целью программы является создание определенных 2-мерных массивов, в которых есть несколько различных объектов класса, которые не так просто общаются друг с другом. Для того, чтобы отладить, я добавил строку кода для вывода, где я был в программе (cout << «Вот»;). Программа теперь работает, но если я удалю оператор cout, общий результат всей программы потерпит неудачу; программа не следует предполагаемой процедуре для создания упомянутых 2-ых массивов.
Итак, мой вопрос: что может случиться? или, скорее, как включение оператора cout «исправит» (или окажет какое-либо влияние на) другой окружающий код? Не похоже, что выражение cout повлияет на переполнение буфера, но не стесняйтесь обучать меня, если так.
Ваша программа использует конструкции, которые определены как вызывающие «неопределенное поведение». Более конкретно, программа, вероятно, считывает неинициализированную память из стека выполнения или записывает данные за пределы чего-либо, хранящегося в стеке. Вызов функций, таких как печать чего-либо для cout, изменяет стек и может привести к тому, что программа будет вести себя по-другому, если у вас есть такие ошибки.
Других решений пока нет …