gpt4 book ai didi

c++ - 使用 const_cast<> 时出现意外输出

转载 作者:行者123 更新时间:2023-11-30 00:36:34 26 4
gpt4 key购买 nike

我在我的机器 (devcpp) 和 codepad.org 上写了下面的代码,但在我的匹配上工作正常,在 codepad.org( http://codepad.org/XfW5a8en ) 上输出是垃圾字符。

   #include <iostream>
#include<cstring>
using namespace std;
int main () {
char *str1 =const_cast<char*>(string("Hello ").c_str());
char *str2 = const_cast<char*>(string("World!").c_str());
char *ptr = str1;
char *&rptr = str1;
rptr = str2;
std::cout << ptr << str1 << std::endl;
}

我期望输出为世界,您好!

最佳答案

当您说 string("Hello ") 而不将它存储在任何地方时,该字符串可以在创建它的表达式末尾被销毁。

你正在获取一个指向被销毁的字符串所拥有的内存的指针,它可能会或可能不会在之后的一段时间内保留 "Hello " 的值,但不确定是否那会发生,或者会发生多久。

它只在您的机器上工作,因为有时“未定义的行为”意味着“看起来可以工作”。 :-)

关于c++ - 使用 const_cast<> 时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763416/

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