我最近完成了 C 的大学课程。因此,我当然缺乏经验。
一些大学倾向于教他们的学生安全编程,或者至少教一些元素。甚至还有一段视频(取自这里)。
在 C 语言中,复制字符串需要 - 据我所知 - strcpy 或 string.h 函数。您如何在日常编程中安全地使用它?你有一些函数来处理分配以防止缓冲区溢出吗?有C 的 CERT 安全编码标准。它提供了示例和合规的解决方案:
int main(int argc, char *argv[]) {
/* ... */
char prog_name[128];
strcpy(prog_name, argv[0]);
/* ... */
}
他们的替代方案是:
int main(int argc, char *argv[]) {
/* ... */
char *prog_name = (char *)malloc(strlen(argv[0])+1);
if (prog_name != NULL) {
strcpy(prog_name, argv[0]);
}
else {
/* Couldn't get the memory - recover */
}
/* ... */
}
取自这里,第二个例子。
但据我所知,这只是更具挑战性、更多代码、更多工作。为什么没有人改变图书馆本身?或者至少为什么没有人提供安全的替代库或函数,以正确的方式处理这个问题?
感谢阅读,祝