【发布时间】:2015-06-26 14:33:38
【问题描述】:
我有这段代码:
new->name = zalloc(sizeof(char) * strlen(name) + 1);
if (!new->name)
goto alloc_failed;
strcpy(new->name, name);
如果 strcpy() 不赞成,即使名称空间是预先分配的,这也是一般用途。只是想知道出于安全目的。最好使用 strncpy() 或 srtlcpy()。
【问题讨论】:
-
strcpy和strlcpy之间的选择是一个意见问题,唯一重要的意见是资助您的薪水或为您的作业评分的人的意见。 OTOH,我想大多数人都会同意strncpy是一个糟糕的选择,因为它不能保证输出将被 NUL 终止(因此您需要额外的代码来 NUL 终止字符串)。 -
memcpy 在这里更有意义,因为您知道长度
标签: c buffer buffer-overflow strcpy strncpy