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

C++ c++;仅将对象的指针设置为nullptr,c++,pointers,stack,C++,Pointers,Stack,假设我有一个数组a,其中包含指向类B对象的指针。假设a[0]指向对象c。 如果我现在设置a[0]=nullptr,如果c是在堆栈上构造的,并且如果a[0]是引用c的唯一对象,如果引用常规指针(Obj*ptr),是否会调用c的析构函数,从而c被销毁因此,由于赋值,c的d'tor不会被称为。如果有这样的代码,它可能会被调用- ... // Some code and initialization before { Obj c; a[0] = &c; a[0] = NULL; //c isn'

假设我有一个数组
a
,其中包含指向类
B
对象的指针。假设
a[0]
指向对象
c

如果我现在设置
a[0]=nullptr
,如果
c
是在堆栈上构造的,并且如果
a[0]
是引用
c

的唯一对象,如果引用常规指针(Obj*ptr),是否会调用
c
析构函数,从而
c
被销毁因此,由于赋值,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,它的内存可能会泄漏

这些智能指针?取决于作用域(以及其他很多东西)。请添加一些实际的代码,而不是它的描述。你所做的只是一个简单的作业。没有对物体的破坏(但可能是泄漏)。它基本上与
inta相同;a=5;a=0
如果对象
c
在堆栈上,那么当它超出范围时,它将被销毁。更大的问题是:如果
c
是在堆栈上构造的(并且尚未销毁),数组中的指针怎么可能是唯一引用它的对象?请创建一个数组。不要描述代码。发布实际代码。