gpt4 book ai didi

c - 为什么 C 没有像 strcpy() 这样使用的函数并自动检查缓冲区大小以防止缓冲区溢出错误?

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:26 24 4
gpt4 key购买 nike

我真的很奇怪为什么 C 中没有像 strcpy()memcpy() 等自动检查缓冲区大小的函数。行为像这样的东西:

#define strcpy2(X, Y) strncpy(X, Y, sizeof(X))

有些人告诉我:“因为它是古老的语言。”但是,C 并不是一门死语言。 IOS可以修复标准,并添加了strncpy等新函数。

其他人告诉我:“它会导致性能问题。”但是,我认为“如果存在这样的功能,您仍然可以在性能很重要的情况下使用旧功能。在所有情况下,您都可以使用该功能,并且可以期望安全性得到改善。”

还有人告诉我:“所以,有一个像strncpy()这样的函数”,或者“C 是为考虑这个问题的专业开发人员设计的”,但是strncpy() 不会自动检查 - 开发人员必须确定缓冲区的大小,而且像 Chrome 这样由专业开发人员制作的大型程序仍然存在缓冲区溢出漏洞。

我想知道为什么不能实现这样的功能的技术原因。


*英语不是我的母语。所以我想有一些错误......对此感到抱歉。 (编辑(cmaster):现在应该修复了。希望你喜欢新的措辞。)

最佳答案

如果 X 是指针(通常是指针),则 sizeof X 不会告诉您 X 指向的数组的大小。大小必须作为参数传递。

关于c - 为什么 C 没有像 strcpy() 这样使用的函数并自动检查缓冲区大小以防止缓冲区溢出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801896/

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