以下是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/