我遇到了内置MSVC调试器的一些无法解释的行为。看起来程序正在调试,调试器本身在不同的变量集上运行。此变量(arg)具有类型llvm :: StringRef。该类有两个数据成员 - char * Data和size_t Length。
来自std :: string的隐式转换构造函数很简单:
StringRef(const std::string &Str)
: Data(Str.data()), Length(Str.length())
{}
Hovewer,这种转换的结果看起来像调试器的局部变量选项卡中的血腥混乱。当我尝试对这个物体进行小型转储并添加手表(长长*)(& arg)时,它看起来几乎一样。 BUT 执行此作品的结果是可以的,如控制台窗口中所示。