我想了解C++中的内存管理。
这里是我的代码:删除操作员内存管理
Person *P5 = new Person();
delete P5;
std::cout<<P5->getWeight()<<std::endl;
delete P5;
std::cout<<P5->getWeight()<<std::endl;
我的第一个作品COUT和第二没有,哪里我都使用过delete
。任何人都可以解释吗?
我想了解C++中的内存管理。
这里是我的代码:删除操作员内存管理
Person *P5 = new Person();
delete P5;
std::cout<<P5->getWeight()<<std::endl;
delete P5;
std::cout<<P5->getWeight()<<std::endl;
我的第一个作品COUT和第二没有,哪里我都使用过delete
。任何人都可以解释吗?
delete P5;
std::cout<<P5->getWeight()<<std::endl; // 1
delete P5; // 2
std::cout<<P5->getWeight()<<std::endl; // 3
你试图指向已经实现内存间接引用指针。这是未定义的行为。什么事情都可能发生。
你试图释放已释放的内存。这是未定义的行为。什么事情都可能发生。
goto
无论cout
保证为你工作,因为你使用已删除的对象。
只是有时候,当你删除某些东西时,内存不会被覆盖,数据仍然存在。但是下次分配内存时可能会重用它。
当你
Person *P5 = new Person();
delete P5;
P5是一个悬摆指针。 delete
您可能会碰到未定义的行为 –
您最后三行调用UB。 – soon
为什么要在删除它后打印出来 – aaronman