这样安全吗?我的意思是删除只关心它给出的地址还是删除原始指针变量很重要?
myClass *p1 = new myClass();
myClass *p2 = p1;
delete p2;
p1 = NULL;
p2 = NULL;
Run Code Online (Sandbox Code Playgroud)
这样安全吗?
它有效.也就是说,它具有明确定义的行为并且不会泄漏(假设它编译).
但安全吗?让别名指针随意运行是一个危险的想法.您必须跟踪哪些指针已被删除,哪些指针未被删除; 哪个指向被删除的内存,哪个没有.
使用支持RAII的句柄来管理动态分配的对象(如std::unique_ptr和std::shared_ptr(或增强替换))要安全得多.std::unique_ptr不允许别名,并std::shared_ptr以安全的方式允许别名.