以下是 C++ 语言代码:
#include <iostream>
#include <string>
using namespace std;
string fun(const string& str)
{
string new_str;
new_str = str;
new_str[0] = 'H';
return new_str;
}
int main()
{
string str = "Apple";
str = fun(str);
cout << str << endl;
return 0;
}
上面的代码,在 Visual Studio 2022 调试时,在自动窗口看到 fun 函数中的 new_str 变量显示“读取字符串字符时出错”,展开查看每一个字符时又看到“无法读取内存”。与此同时,程序运行却一切正常。这是为什么?
另外,这一情况仅发生在子函数里,而在 main 中一切正常。
代码是没问题的,我在两个在线编译平台上编译的结果都正常
在python123.io上运行结果如下:
在onlinegdb.com上运行结果如下:
所以应该是编译器的问题,但具体什么原因我也不清楚,只是帮你排除代码的原因~