64,637
社区成员
发帖
与我相关
我的任务
分享
char a[5]; // 定义长度为5的字符数组
char b[] = "A string which is longer than 5 chars";
strcpy( a, b); //没有限制源字符串的大小,会造成缓冲区溢出
//以a[6]为起点的一段内存被写入值, 但是, 此时也许这个这段内存被其它的程序或变量使用时, 则会改变其它变量的值
//进而改变程序的逻辑,造成错误
strcpy_s( a, 5, b); //会对长度进行限制
对内存的越界访问有可能没有什么问题,取决于当时内存的分配情况。
但这是不安全的,常在河边走,总有鞋湿的时候。