This question already has answers here:
C++ delete - It deletes my objects but I can still access the data?

(13个回答)


7年前关闭。




我正在尝试了解C++中的内存管理。
这是我的代码:
 Person *P5 = new Person();
 delete P5;
 std::cout<<P5->getWeight()<<std::endl;
 delete P5;
 std::cout<<P5->getWeight()<<std::endl;

我的第一个cout有效,第二个cout无效,因为我在两者之前都使用delete。谁能解释一下?

最佳答案

delete P5;
std::cout<<P5->getWeight()<<std::endl; // 1
delete P5;                             // 2
std::cout<<P5->getWeight()<<std::endl; // 3
  • 您正试图取消引用指向已实现内存的指针。这是未定义的行为。什么事情都可能发生。
  • 您正在尝试释放已经释放的内存。这是未定义的行为。什么事情都可能发生。
  • goto 1
  • 关于c++ - 删除运算符(operator)内存管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17357528/

    10-11 22:10
    查看更多