Почему удаление «cout» из моей функции меняет результат?

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

Итак, мой вопрос: что может случиться? или, скорее, как включение оператора cout «исправит» (или окажет какое-либо влияние на) другой окружающий код? Не похоже, что выражение cout повлияет на переполнение буфера, но не стесняйтесь обучать меня, если так.

2

Решение

Ваша программа использует конструкции, которые определены как вызывающие «неопределенное поведение». Более конкретно, программа, вероятно, считывает неинициализированную память из стека выполнения или записывает данные за пределы чего-либо, хранящегося в стеке. Вызов функций, таких как печать чего-либо для cout, изменяет стек и может привести к тому, что программа будет вести себя по-другому, если у вас есть такие ошибки.

9

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

Других решений пока нет …