C++ 仅设置对象指向 nullptr 的指针



假设我有一个数组a它包含指向类B对象的指针。假设a[0]指向对象c。 如果我现在设置a[0] = nullptr,如果c是在堆栈上构建的并且a[0]是唯一引用c的东西,那么cdestructor是否会被调用并因此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,它的内存会泄漏

最新更新