gpt4 book ai didi

c++ - 为什么我会收到运行时检查失败 #2 - 变量 'x' 周围的堆栈已损坏?

转载 作者:行者123 更新时间:2023-11-30 01:51:20 24 4
gpt4 key购买 nike

这让我发疯。我有遗留代码,我在其中添加了更多条件(如下)。我正在解析一个字符串并检索数据。这是在遗留代码中完成的方式,所以我没有改变样式。

        WORD wPSM = 0;
double dblPST = 0;
WORD wSDB = 0;

if(-1 != str.Find("PSM="))
{
nNumScanned = sscanf_s((LPCTSTR) str, "PSM=%u", &wPSM);
}
if(-1 != str.Find("PST="))
{
nNumScanned = sscanf_s((LPCTSTR) str, "PST=%lf", &dblPST);
}
if(-1 != str.Find("SDB="))
{
nNumScanned = sscanf_s((LPCTSTR) str, "SDB=%u", &wSDB);
}

我收到错误Run-Time Check Failure #2 - Stack around the variable 'wPSM' was corrupted。如果我评论这三行,我不会得到这个错误。 str 是 CString,它确实包含预期值。

上面的 sscanf_s 语法有问题吗?

请注意这是 VS2010 的 c++ 项目,我将其标记为 C 只是为了引起注意,因为 sscanf_s

最佳答案

WORD is a define对于 16 位无符号整数,因此您的程序具有未定义的行为,因为 sscanf_s 需要一个无符号整数。

在调用 sscanf_s 时需要使用 %hu 修饰符。

关于c++ - 为什么我会收到运行时检查失败 #2 - 变量 'x' 周围的堆栈已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26238529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com