我有这样的事情:
class HashTable
{
Bucket<E>** index;
...
}
~HashTable( )
{
delete[] index;
}
class Bucket
{
E* elements
...
}
~Bucket( )
{
delete[] elements;
}
在这种情况下如何正确释放内存?
删除[]索引是否足够,或者我是否需要循环遍历所有Bucket-Objects并单独删除elemtents-array?
答案 0 :(得分:2)
如果您使用new
单独分配每个存储桶对象,则应使用delete
解除每个存储空间对象的释放。
简单的规则是:
您应该分别拥有尽可能多delete
或delete[]
个new
或new[]
。
建议:
你可以通过使用智能指针帮助自己解决这些内存管理问题。
答案 1 :(得分:0)
HashTable包含一个双数组(我猜),因此必须删除它:
delete[] index[0];
delete[] index[1];
...
delete[] index;
如果这些级别中的任何一个不是数组,而是单个指针,则忽略[]
。
Bucket
类正如您所写,很好,它会自动删除其数组及其中的E
。