gpt4 book ai didi

c++ - 哪些 C/C++ 函数最常被错误使用并可能导致缓冲区溢出?

转载 作者:IT老高 更新时间:2023-10-28 22:17:52 24 4
gpt4 key购买 nike

有人要求我维护一个充满内存泄漏的大型 C++ 代码库。在四处寻找时,我发现我们有很多导致泄漏的缓冲区溢出(它是如何变得如此糟糕,我不想知道)。

我决定首先删除缓冲区溢出,从危险函数开始。哪些 C/C++ 函数最常被错误使用并可能导致缓冲区溢出?

对于用于帮助查找缓冲区溢出的编译器和/或工具,我有 created another question that deals with this

最佳答案

一般来说,任何不检查参数边界的函数。一个列表将是

  • 获取()
  • scanf()
  • strcpy()
  • strcat()

您应该使用大小有限的版本,如 stncpy、strncat、fgets 等。然后在给出大小限制时要小心;考虑到 '\0' 终止字符串。

此外,在 C 或 C++ 中,数组未绑定(bind)检查。以下示例将导致错误。见 off by one error

int foo[3];
foo[3] = WALKED_OFF_END_OF_ARRAY;

编辑:@MrValdez、@Denton Gentry 的复制答案

关于c++ - 哪些 C/C++ 函数最常被错误使用并可能导致缓冲区溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com