Ниже приведена самая популярная реализация strcpy в традиционных системах. Почему dest и src не проверяются на NULL в начале? Я слышал однажды, что в прежние времена память была ограничена, поэтому короткий код всегда был предпочтительным. Будете ли вы реализовывать strcpy и другие подобные функции с проверкой указателя NULL в начале сейчас? Почему нет?Почему никакие проверки работоспособности в устаревшем strcpy()
char *strcpy(char *dest, const char *src)
{
char *save = dest;
while(*dest++ = *src++);
return save;
}
Это может быть безопасно вообще. Но это также означает, что опытные разработчики должны платить за безопасность (что им не нужно), так что неопытные разработчики не подрываются. –
Опытные разработчики должны платить за безопасность (что они не считают нужным) ... (FTFY). –
@Brian Hooper - нет, если вы используете C, вы должны точно знать, что вам нужно. Мой встроенный код никогда не требует «NULL» проверки на 'strcpy', потому что все буферы статически распределяются и используются напрямую. Нет абсолютно никакого способа, чтобы я когда-либо передавал 'NULL''' strcpy'. Так почему я хочу заплатить цену? В этом нет «не думаю, что мне нужно». – detly