c++ - 删除后哪些指针悬空?

标签 c++ pointers memory-management

如果您执行以下操作:

ClassType *foo = new ClassType();
ClassType *moo = foo;
delete foo;

再往前走,还有悬空指针吗?我想没有,因为你只声明了一个“新的”,然后删除了它,但我想确定......

谢谢

最佳答案

您创建了一个对象并将其删除。 您的两个指针仍然指向该对象先前占用的内存地址,但是该对象已被删除,通常这是悬空指针的公认定义-指向不再包含事件对象的某些内存。

没有内存泄漏,您的程序也不会导致问题除非您尝试通过任一指针访问现在已删除的对象。

使用 std::shared_ptr 或 std::unique_ptr 之类的东西可以帮助您以更安全的方式管理内存。

关于c++ - 删除后哪些指针悬空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313279/

相关文章:

c++ - "User-defined literal operator not found"

c++ - N 元树级别遍历错误 (C++)

c - SDL Surfaces 数组在一定次数的重新分配后会更改内容

c - *p[5] 和 (*p)[5] 有什么区别?

cocoa - Coredata、EXC_BAD_ACCESS 或相关对象上的奇怪行为

macos - 将自释放对象转换为 ARC

C++:在指针中存储常量多维数组

C++ mktime 更改我的 tm_struct 的值

c++ - 如何在指针初始化为数组的第一个索引后释放指针?

java整数数组大小混淆