假设我有一个数组a
它包含指向类B
对象的指针。假设a[0]
指向对象c
。 如果我现在设置a[0] = nullptr
,如果c
是在堆栈上构建的并且a[0]
是唯一引用c
的东西,那么c
的destructor
是否会被调用并因此c
销毁。
如果你引用常规指针(Obj* ptr),那么c的d'tor就不会因为赋值而被调用。如果有类似 - 的代码,可能会调用它 -
... // Some code and initialization before
{
Obj c;
a[0] = &c;
a[0] = NULL; //c isn't affected in any way by this assignment
} //End of scope. **c's d'tor is called here**
虽然,如果在堆上分配了 c,它的内存会泄漏