bug
VS2015环境下,显示strcpy()函数出错的解决办法: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 即使前面加了头函数文件cstring 也无济于事。
原因:vs准备弃用strcpy的,安全性较低,所以微软提供了strcpy_s来代替.如果继续使用strcpy的,那么只需要在函数体前面加上#pragma warning(disable:4996)就可以了。
strcpy_s(dest, bufsize, src);
bufsize为dest缓冲区最大长度。它与 strcpy 的不同在于,在它取得额外参数来决定目的缓冲区大小时,会因为发生溢位而出现错误,如此一来,就可以预防缓冲区溢位。
PS: 缓冲区溢位攻击
当前存入的数据量大于缓冲区的容量,可能导致栈帧指向原本的函数返回地址被覆盖,黑客利用一点,篡改进程运行时栈(比如指向shell脚本),从而改变程序的正常流向。