【发布时间】:2013-01-27 23:23:00
【问题描述】:
我的班级有一个名为 A 的通用指针成员数组:
T** A
目前,我通过以下方式删除析构函数中的数组:
~MyQuickInitArray(){
delete [] A;
};
这会导致内存泄漏吗?如果是这样,我应该遍历数组并在每个对象上调用 delete 吗?
附带说明 - 如果B 是整数数组或者析构函数已经处理它,我是否需要调用delete [] B?
编辑:
这是分配发生的方式:
MyQuickInitArray(int size)
{
if(size <= 0)
{
throw new std::exception;
}
_size = size;
_counter = 0;
A = new T*[size];
B = new int[size];
C = new int[size];
}
MyQuickInitArray(const MyQuickInitArray& myQuickInitArray)
{
_size = myQuickInitArray._size;
_counter = myQuickInitArray._counter;
A = new T*[_size];
for(int i = 0; i<_size ;i++)
{
if(myQuickInitArray.A[i] != NULL)
{
A[i] = new T(*myQuickInitArray.A[i]);
}
}
B = myQuickInitArray.B;
C = myQuickInitArray.C;
}
【问题讨论】:
-
除非您显示分配代码,否则如何判断解除分配代码是否正确?
-
@user1929959 A 不是指向指针数组的指针
-
@AlokSave 请查看我的编辑
-
哇,为什么这是
throw new std::exception;??通过引用捕获值抛出(可能是 const)。 -
@AlokSave 你能详细说明这有什么问题吗?
标签: c++