VS2017里strcpy_s, wcscpy_s等函数导致尾部数据被置为0xFE的解决方法

将曾经的一个VC++开发的项目迁移到VS2017以后,出现一个问题,就是使用strcpy_s复制字符串完成之后,在结束符0x00后面的数据都会被0xFE填充。

之前的VS2015版本好像没有遇到这种问题,说明应该是VS2017开始才变动的,解决方法也很简单:在项目里包含 crtdbg.h 头文件,然后调用_CrtSetDebugFillThreshold(0); 即可。

#include <crtdbg.h>

int main() {
  //......
  _CrtSetDebugFillThreshold(0);
  //......
}

参考链接:

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcpy-s-wcscpy-s-mbscpy-s?view=vs-2017

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/crtsetdebugfillthreshold?view=vs-2017

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据