我真的不知道为什么会出现在C像没有的功能strcpy(),memcpy()等等,可自动检测该缓冲区的大小.表现得像这样的东西:
#define strcpy2(X, Y) strncpy(X, Y, sizeof(X))
Run Code Online (Sandbox Code Playgroud)
有人告诉我:"因为它是古老的语言." 但是,C不是一种死语言.IOS可以修复标准,并strncpy添加了新的功能.
其他人告诉我:"这会导致性能问题." 但是,我认为"如果这样的函数存在,你仍然可以在性能很重要的情况下使用旧函数.在所有情况下,你都可以使用该函数,你可以期待安全性的提高."
还有一些人告诉我:"那么,有一个像strncpy()"或"C是专为考虑这个问题的专业开发人员设计的",但strncpy()不会自动进行检查 - 开发人员必须确定缓冲区的大小,还是像大型程序一样Chrome由专业开发人员制作,具有缓冲区溢出漏洞.
我想知道为什么不能做出这样的功能的技术原因.
*英语不是我的母语.所以我猜有一些错误......抱歉.(编辑(cmaster):现在应该修复.希望你喜欢新的措辞.)