是否会从 <iostream.h> 更改为<iostream>缓冲区溢出?

will change from <iostream.h> to <iostream> cause buffer overflow?

本文关键字:gt iostream lt 缓冲区 溢出 是否      更新时间:2023-10-16

我需要在我的办公室电脑上构建一些旧代码,这台电脑安装了gcc 4.4.5。我编辑了代码(删除。h或添加<cstring>之类的东西),以便使它们更新,以便它们可以由gcc 4.4.5编译。然而,在一个看似成功的编译二进制文件之后,每次我运行它都会产生缓冲区溢出。但代码运行没有错误在我的计算机在家里(gcc 4.1.2)。所以有可能是我所做的更改导致了这个错误吗?我不确定,因为我不是真正的程序员。

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

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

我妈妈也不是程序员,但她不会在Linux内核里瞎折腾:-)


(a)有时未定义的行为实际上有效!这实际上是它最烦人的地方。它最好总是失败,这样我们就能在把问题释放给可怜的客户之前解决更多的问题。但是,即使它有效,这也不意味着它是一个好主意。