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

0 c++ compiler-construction gcc buffer-overflow

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

pax*_*blo 9

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

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

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


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

  • +1我的母亲不是编码器,但她不会在Linux内核中修补:-)`好的! (3认同)