c++ - 为什么在遗留 strcpy() 中没有健全性检查

标签 c++ c strcpy

以下是strcpy在传统系统中最流行的实现。为什么一开始不检查 dest 和 src 是否为 NULL?我曾经听说过,在过去,内存是有限的,所以总是首选短代码。您会在开始时使用 NULL 指针检查来实现 strcpy 和其他类似功能吗?为什么不呢?

char *strcpy(char *dest, const char *src)
{
   char *save = dest;
   while(*dest++ = *src++);
   return save;
}

最佳答案

NULL 是一个坏指针,但 (char*)0x1 也是。它也应该检查吗?在我看来(我不知道确切的原因),不需要在如此低级的操作中进行健全性检查。 strcpy() 是如此基础以至于它应该像 asm 指令一样被对待,如果需要的话你应该在调用者中做你自己的健全性检查。只是我的 2 美分 :)

关于c++ - 为什么在遗留 strcpy() 中没有健全性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3616295/

相关文章:

php - 7zip 字符串/流压缩 PHP/C? .7z 存档中没有文件名/日期存储,每个字节计数

c++ - CUDA图像处理错误

C strtok 和 strcpy

c++ - 将字符串转换为整数(相当于二进制)

android - 如何在 Android(NDK) 中使用 CPR 库?

UNIX 终端应用程序中的彩色文本

c - 快速排序调试

c - 我应该从 C 函数返回 TRUE/FALSE 值吗?

C strcpy() - 邪恶?

c++ - 无法使用 C++ catch(...) 捕获访问冲突异常