刚刚学习c++,自学觉得好累啊,可能要走很多的弯路,没有办法。
今天照书敲了一段代码,其中就有一些问题,
上网查了一下才知道,是由于我使用vs平台的问题,
可能看的书是纯的c++,vc中所提供的CRT中提供了比原来更具有安全性的 strcpy_s 函数,所以在使用strcpy的时候
会给出警告,报出安全隐患。那么strcpy 和 strcpy_s到底有什么不同呢?
比如如下代码:
char[3] stringBuf ;
strcpy(stringBuf, "123456"); // 旧版
strcpy_s(stringBuf, "123456"); //新版
我运行了一下,旧的版本下在运行后仍然会吧123456写入到溢出后的内存中,而报错并没有提示错误类型
新的版本在运行后直接中断并正确的报出的问题所在,Buffer is too small!
这样的方法更容易让我们发现错误的所在。