c ++仅将对象的指针设置为nullptr

时间:2017-10-03 12:27:51

标签: c++ pointers stack

让我们说我有一个数组a,它包含指向类B的对象的指针。让我们说a[0]指向对象c。 如果我现在设置a[0] = nullptr,那么destructor的{​​{1}}会被调用,因此c如果在堆栈上构建了c并且ca[0]唯一引用c的东西。

1 个答案:

答案 0 :(得分:1)

如果你引用常规指针(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,那么它的内存就会泄露