_strset_s 崩溃
以下代码在执行 _strset_s
时崩溃,我在 _strset_s
中给出了 80 作为长度。可能是什么问题?我启用了运行时堆栈帧检查选项 /RTCs
char strToken[80];
_strset_s(strToken, 80, '\0' );
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以让编译器使用以下命令进行填充
。这会将字符串的所有字节清零。
You can let the compiler do the filling by using
This will zero all the bytes of the string.
根据 MSDN。由于您的字符串没有初始化为任何内容,因此它违反了这个不变量。
默认“无效参数”处理程序”将崩溃,再次来自 MSDN:
所以我会先尝试 Null 终止 strToken (或者更好地按照 Bo Persson 在他的回答中建议的那样)
The input to
_strset_s
has to be null terminated according to MSDN. Since your string is not initialized to anything, it violates this invariant.The default "invalid parameter handler" is to crash, again from MSDN:
So I'd try Null terminating strToken first (or better yet do what Bo Persson suggests in his answer)