是否会从 <iostream.h> 更改为<iostream>缓冲区溢出?
will change from <iostream.h> to <iostream> cause buffer overflow?
我需要在我的办公室电脑上构建一些旧代码,这台电脑安装了gcc 4.4.5
。我编辑了代码(删除。h或添加<cstring>
之类的东西),以便使它们更新,以便它们可以由gcc 4.4.5
编译。然而,在一个看似成功的编译二进制文件之后,每次我运行它都会产生缓冲区溢出。但代码运行没有错误在我的计算机在家里(gcc 4.1.2
)。所以有可能是我所做的更改导致了这个错误吗?我不确定,因为我不是真正的程序员。
更有可能的是原始代码在某些方面有bug(未定义的行为,缓冲区溢出等),但旧编译器创建(或旧库包含)的代码更能容忍这些问题(a)。
恐怕你可能不得不去解决(或找人解决)问题的根本原因。我的问题是:"如果你不认为自己是一个程序员,为什么你要编辑代码并重新构建它?"我妈妈也不是程序员,但她不会在Linux内核里瞎折腾:-)
(a)有时未定义的行为实际上有效!这实际上是它最烦人的地方。它最好总是失败,这样我们就能在把问题释放给可怜的客户之前解决更多的问题。但是,即使它有效,这也不意味着它是一个好主意。
相关文章:
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 需要从 istream 和 ostream 派生 iostream
- EASTL矢量<向量<int>>连续的
- std::带有自定义缓冲区的 iostream 不允许我写入
- 新的放置取决于 iostream
- 包含在 <initializer_list> <iostream>?
- 为什么在包含iostream时可以使用printf()?
- 如果 iostream 对象不可复制,为什么以下代码是合法的?
- 为什么我必须在包含后写 std::cin <iostream>?
- 如何将带有空字符的字节数组馈送到 std::iostream 中?
- 磁力计代码:C++ vs C - iosstream,矢量 - 错误iostream:没有这样的文件或目录
- 通过boost asio iostream下载大文件的最快方法是什么?
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 包含iostream导致不同的二进制文件
- iostream运算符重载的C++异常规范
- basic_iostream和iostream之间的区别
- iostream 和 fstream 的重载<<
- Borland C++编译器中的Iostream
- 从类模板继承时需要iostream
- 为什么<iostream>依赖MinGW dll?