gpt4 book ai didi

c++ - 如何删除指向泛型类型对象的指针数组

转载 作者:行者123 更新时间:2023-11-28 00:50:15 25 4
gpt4 key购买 nike

我的类有一个名为 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;
}

最佳答案

Will this cause a memory leak?

如果 A 是一个指针数组,您当然可以指望它。您需要遍历数组并自行删除指针。

~MyQuickInitArray {
for (int i =_size; i--;) {
delete A[i];
}
delete [] A;
}

Do I need to call delete [] B if B is an array of integers or does the destructor handle it?

是的,始终删除分配给 new 的内容。您可以在类的析构函数中执行此操作。

关于c++ - 如何删除指向泛型类型对象的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com