将从<iostream.h>更改为<iostream>导致缓冲区溢出?</iostream> </iostream.h>

时间:2011-10-18 06:15:22

标签: c++ gcc compiler-construction buffer-overflow

我需要在我的办公室计算机上构建一些旧代码,这些代码已安装gcc 4.4.5。我编辑了代码(删除.h或添加<cstring>之类的内容)以使它们更新,以便gcc 4.4.5编译它们。但是,在看似成功的编译之后,二进制文件在每次运行时都会发出缓冲区溢出。但是代码在我家的计算机上运行没有错误(gcc 4.1.2)。那么我做出的改变是否可能导致此错误?我不确定,因为我不是真正的程序员。

1 个答案:

答案 0 :(得分:9)

更有可能的是,原始代码在某种程度上是错误的(未定义的行为,缓冲区溢出等),但旧编译器创建(或包含旧库)代码更容忍这些问题(一个)

我担心你可能不得不去解决(或找人解决)问题的根本原因。我的问题是:“如果你不认为自己是程序员,为什么要编辑代码并重建它?”。

我的母亲也不是编码器,但她不会在Linux内核中修补: - )


(a)有时未定义的行为实际上有效!这实际上是最烦人的方面。更好的是它会一直失败,这样我们就可以解决更多的问题,然后再将它们释放给我们的穷人。但是,即使它有效,这也不是一个好主意。