2

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

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

4

1 回答 1

12

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

于 2013-07-23T05:58:25.580 回答