删除操作员内存管理 我试图理解C++中的内存管理。 这是我的密码: Person *P5 = new Person(); delete P5; std::cout<<P5->getWeight()<<std::endl; delete P5; std::cout<<P5->getWeight()<<std::endl; Person*P5=新人(); 删除P5; std::cout删除P5; std::cout删除P5; std::cout
这两个删除操作员内存管理 我试图理解C++中的内存管理。 这是我的密码: Person *P5 = new Person(); delete P5; std::cout<<P5->getWeight()<<std::endl; delete P5; std::cout<<P5->getWeight()<<std::endl; Person*P5=新人(); 删除P5; std::cout删除P5; std::cout删除P5; std::cout,c++,memory-management,C++,Memory Management,这两个cout都不能保证为您工作,因为您使用的是已删除的对象。 只是有时候,当你删除一些东西时,内存没有被覆盖,数据仍然存在。但下次分配内存时可能会重新使用它。 当你这样做的时候 Person *P5 = new Person(); delete P5; p5是一个悬空的指针。只需在delete之后才使用它,因为您使用的是已删除的对象,因此cout也不能保证对您有效。 只是有时候,当你删除一些东西时,内存没有被覆盖,数据仍然存在。但下次分配内存时可能会重新使用它。 当你这样做的时候 Pe
cout
都不能保证为您工作,因为您使用的是已删除的对象。只是有时候,当你删除一些东西时,内存没有被覆盖,数据仍然存在。但下次分配内存时可能会重新使用它。
当你这样做的时候
Person *P5 = new Person();
delete P5;
p5是一个悬空的指针。只需在
delete
之后才使用它,因为您使用的是已删除的对象,因此cout
也不能保证对您有效。只是有时候,当你删除一些东西时,内存没有被覆盖,数据仍然存在。但下次分配内存时可能会重新使用它。
当你这样做的时候
Person *P5 = new Person();
delete P5;
p5是一个悬空的指针。只要在删除后不要使用它,你可能会遇到未定义的行为。你的最后三行调用UB。为什么要在删除后打印出来?这很简单。如果您已经告诉操作系统您将不再使用内存,那么您将不再使用它。无论如何,如果你这样做,你不能保证任何事情。你可能遇到了未定义的行为。你的最后三行调用UB。为什么要在删除它后打印出来?这很简单。如果您已经告诉操作系统您将不再使用内存,那么您将不再使用它。无论如何,如果你这样做,你不能保证任何事情。