删除操作员内存管理
Delete operator memory management
我正在努力理解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
1
由于使用的是已删除的对象,因此不能保证cout
对您都有效
只是有时候,当你删除一些东西时,内存没有被覆盖,数据仍然存在。但下次分配内存时,它可能会被重用
当你做
Person *P5 = new Person();
delete P5;
p5是一个悬空指针。只是不要在delete
之后使用它
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 可以通过非原始指针来增强容器矢量管理内存
- 如何使用 std::vector<std::tuple<A,B>> 来管理内存(调整大小、保留,...),但实际上将 As 保留在 B 之前,连续
- 线程管理内存泄漏
- 通过读取文件创建映射<字符串,矢量>时如何管理内存<string>
- 管理内存C++
- ptr_vector如何管理内存
- 在C++Builder/Firemonkey中使用表单创建来管理内存
- 如何正确管理内存(运行时)C++
- 在Node.js中使用Native Abstractions时,如何管理内存
- ostream是如何管理内存的
- C++中管理内存泄漏的问题
- OpenCL:在 CPU 上而不是在 GPU 上更正结果:如何正确管理内存
- deque是如何管理内存的
- 用c++/cli互操作管理内存
- 如何衡量管理内存所花费的时间
- (加速C++)章节管理内存
- 如何在此场景中管理内存