_strset_s崩溃了

时间:2011-05-20 12:12:26

标签: c++ visual-studio-2008

以下代码在执行_strset_s时崩溃我在_ strset_s中给出了80长度。可能是什么问题呢?。我启用了运行时堆栈帧检查选项/RTCs

char strToken[80];
_strset_s(strToken, 80, '\0' );

2 个答案:

答案 0 :(得分:4)

您可以让编译器使用

进行填充
char strToken[80] = {0}; 

这将使字符串的所有字节为零。

答案 1 :(得分:2)

根据MSDN_strset_s的输入必须为空终止。由于您的字符串未初始化为任何内容,因此违反了此​​不变量。

  

如果str是空指针,或者size参数小于或等于0,或传入的块不是以null结尾,则调用无效参数处理程序

默认的“无效参数处理程序”将再次从MSDN

崩溃
  

默认的无效参数调用Watson崩溃报告,导致应用程序崩溃并询问用户是否要将崩溃转储加载到Microsoft进行分析。

所以我首先尝试Null终止strToken(或者更好的做Bo Persson在答案中的建议)

char strToken[80];
strToken[79] = '\0';
_strset_s(strToken, 80, '\0' );