在 Visual Studio 2022 中调试时,C++ 语言的子函数内“读取字符串字符时出错”,这是为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 Visual Studio 2022 中调试时,C++ 语言的子函数内“读取字符串字符时出错”,这是为啥?相关的知识,希望对你有一定的参考价值。

以下是 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上运行结果如下:

所以应该是编译器的问题,但具体什么原因我也不清楚,只是帮你排除代码的原因~

参考技术A 这看起来时visual studio 2022调试器的bug,你代码应该没有问题

在Visual Studio中调试时,如何检查有关进程令牌的详细信息?

从Visual Studio 2005开始,watch窗口获得了一个伪寄存器,用于调查有关进程令牌的详细信息。所以,你只要开始调试,在监视窗口中写下“$user”,

技术图片

 

 

有时查看特权和组的扩展视图会很有趣!

以上是关于在 Visual Studio 2022 中调试时,C++ 语言的子函数内“读取字符串字符时出错”,这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章

远程 Azure 服务器上的 Visual Studio 2022 调试

Visual Studio 2022的一个惊艳新功能开发隧道

在 Visual Studio 2019 中首次启动时,Android 模拟器未显示在调试菜单中

使用 Visual Studio 2022 调试Dapr 应用程序

无法在 Visual Studio 2022 上热重载

Visual Studio 2022 有时会显示“应用程序无法正确启动”