C++ 类数组-删除操作

C++ 类数组-删除操作,c++,heap,C++,Heap,我有以下代码: Derived **args = new Derived*[2]; args[0] = new Derived(); args[0]->setname("BLABLA \n"); cout << args[0]->getname(); delete args[0]; args[1] = new Derived(); args[1]->setname("BLABLABLA\n"); cout << args[1]->

我有以下代码:

 Derived **args = new Derived*[2];
 args[0] = new Derived();
 args[0]->setname("BLABLA \n");
 cout << args[0]->getname();
 delete args[0];

 args[1] = new Derived();
 args[1]->setname("BLABLABLA\n");
 cout << args[1]->getname();
 delete args[1];
 delete [] args;
Derived**args=new-Derived*[2];
args[0]=新派生的();
args[0]->setname(“BLABLA\n”);
coutgetname();
删除参数[0];
args[1]=新派生的();
args[1]->setname(“blabla\n”);
coutgetname();
删除args[1];
删除[]args;
是否需要
delete[]args
?为什么

另外,
Derived**args=new-Derived*[2]
真正做什么?它是否为
派生的
的两个指针分配空间?如果是这样,那么如何动态创建一个数组,其中包含2个在堆上派生的对象类型

是否需要
delete[]
args?为什么

是的。它释放了
new-Derived*[2]
分配的内存

另外,
Derived**args=new-Derived*[2]
真正做什么

它为
派生的
的两个指针分配空间。它不为任何
派生的
对象分配空间

如何在堆上动态创建包含两个类型为
Derived
的对象的数组

只需删除一个间接级别:

 Derived *args = new Derived[2];

 args[0].setname("BLABLA \n");
 cout << args[0].getname();

 args[1].setname("BLABLABLA\n");
 cout << args[1].getname();

 delete [] args;
Derived*args=新派生的[2];
args[0].setname(“BLABLA\n”);
库特
是否需要
delete[]
args?为什么

是的。它释放了
new-Derived*[2]
分配的内存

另外,
Derived**args=new-Derived*[2]
真正做什么

它为
派生的
的两个指针分配空间。它不为任何
派生的
对象分配空间

如何在堆上动态创建包含两个类型为
Derived
的对象的数组

只需删除一个间接级别:

 Derived *args = new Derived[2];

 args[0].setname("BLABLA \n");
 cout << args[0].getname();

 args[1].setname("BLABLABLA\n");
 cout << args[1].getname();

 delete [] args;
Derived*args=新派生的[2];
args[0].setname(“BLABLA\n”);

cout@SteveWellens:具体来说,它释放了指针数组,但肯定不会释放指针指向的对象。对,我刚刚删除了我的评论。你说的“它为两个指针分配了空间”是什么意思?所以基本上我只是创建了一个大小为2的数组,其中包含指向派生类型的对象的指针?如果是这样,那么如何动态创建一个数组,其中包含2个在堆上派生的对象类型?@NPE:Yes!确切地说,我需要使用args[0]作为指向Dervived对象的指针,因为我希望稍后在该对象上使用多态性:$这就是为什么我不能使用第二个解决方案proposed@SteveWellens:具体来说,它释放指针数组,但肯定不会释放指针指向的对象。对,我刚刚删除了我的评论。你说“它为两个指向派生的指针分配空间”是什么意思?所以基本上我只是创建了一个大小为2的数组,其中包含指向派生类型的对象的指针?如果是这样,那么如何动态创建一个数组,其中包含2个在堆上派生的对象类型?@NPE:Yes!确切地说,我需要使用args[0]作为指向Dervived对象的指针,因为我希望稍后在该对象上使用多态性:$这就是为什么我不能使用您提出的第二个解决方案