为什么从我的函数中删除'cout'会改变其结果?

时间:2013-07-23 05:50:04

标签: c++ cout buffer-overflow

我是一名中级程序员,编写的程序对我来说可能很复杂。程序的目标是构建某些二维数组,并且有一些不同的类对象以非常简单的方式相互通信。为了调试,我添加了一行代码来输出我在程序中的位置(cout<<“here here;)。该程序现在可以工作,但是如果我删除了cout语句,整个程序的整体结果就会失败;程序不遵循创建所述2-d阵列的预期程序。

所以我的问题是:可能会发生什么?或者更确切地说,如何包括一个cout声明“修复”(或对其他周围的代码产生任何影响)?似乎cout语句不会对缓冲区溢出产生影响,但如果是这样,请随时教我。

1 个答案:

答案 0 :(得分:9)

您的程序使用定义为导致“未定义行为”的构造。更具体地说,程序可能从执行堆栈中读取未初始化的内存,或者写入超出堆栈中存储的内容的边界。调用函数,比如将内容打印到cout,修改堆栈,如果你遇到这些类型的错误,可能导致程序的行为不同。