我在MFC / SDI和Visual Studio 2008下运行一个应用程序。
我仅在发布模式下收到错误“无法创建空文档”。我发现有问题的代码是我在下面给你看的。仅当输入参数是电子邮件字符串即xyz@yahoo.com时才会触发错误。同样在调试模式下,它工作得很好。
有人可以解释一下为什么会这样吗?
void CUtils::RemoveEndingSlash(CString *str) {
if (str->GetAt(str->GetLength()-1) == '/') {
*str = str->Left(str->GetLength() - 1);
}
}
确切的违规代码是
str->GetAt(x).
我解决了使用输入参数按值而不是通过引用更改上述代码的问题。
此致
答案 0 :(得分:0)
好的解决了。
缓冲区溢出,因为一些调用者在传递空字符串之前。
我没有检查空字符串,因此我得到缓冲区溢出。