c++ - 这段代码中发生了什么?

标签 c++ pointers dynamic

当我这样做时会发生什么?当我删除对“boo1”的第一个初始化时,它会打印 boo2 但现在它仍然不打印任何内容。这是否意味着指针分配了一个随机内存并为其分配了“boo1”值,现在我无法访问它或什么?

string *p;
*p="boo1"; 
p=new string;
*p="boo2";
cout << *p;   //prints nothing

最佳答案

第1行:“p”包含随机值,即指随机内存地址。

第 2 行:“*p”引用的随机内存块被解释为字符串实例。此实例由“boo1”分配。

试试看:

string *p = new string;
*p = "boo1";
cout << *p << '\n';
*p = "boo2";
cout << *p << '\n';
delete p;

请记住:

  1. std::string 与愚蠢的 char[] 数组不同!
  2. 所有指针必须在使用前分配!
  3. 所有的“新建”必须有对应的“删除”!

关于c++ - 这段代码中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908272/

相关文章:

c++ - 为什么我要在不调试的情况下启动调试构建?

c++ - 在 C++ 中为没有默认构造函数的成员复制构造函数

c++ - 如何全局而不是本地更改链接列表头指针

css - 垂直和水平居中任何内容

c++ - 小型个人应用程序的最佳数据存储方法(SQL 数据库、XML 或其他文件类型)

c++ - 如何默认初始化 std::vector

c++ - 在 C++ 中,对象和指向对象的指针有什么区别?

c++ - 使用指针参数调用函数与引用参数

dynamic - 处理串联表键的通用方法

javascript - JQuery 仅在点击时运行