在C++中,我有一个类A,以及第二类B,其包含A的分配的数组什么是用于从乙删除A的一个实例的正确语法?在C++中删除动态分配的类实例?
class A
{
~A() {/*delete members of A which were dynamically allocated*/}
//...members...
};
class B
{
A *arrayOfA; // allocated by arrayOfA=new A[123];
};
这是我曾经尝试过,要删除的第i个实例:
// Code to delete an instance of A from B:
// delete arrayofA[i]; // gives a compilation error, because delete requires a pointer
delete &arrayofA[i]; // compiles, but gives a runtime error
A的析构函数被调用,并且似乎正常运行。验证A的内存块时发生该错误(这是一个调试版本)。可能错误是由覆盖堆分配引起的,但我想确定C++语法对于我所要做的是正确的。
64位Windows 7; Visual Studio 2017 v15.3.5
可能是3/5/0 – drescherjm
规则'删除&arrayofA [I];'看起来非常可疑。你不想'删除[] arrayofA;'而不是?你不仅使用了错误的删除形式,而且我在这里是什么?你不能删除数组的一部分,所以对我来说没有多大意义。 – drescherjm
为什么不使用矢量?或共享指针? –