c++ - 在 C++ 中为包含对象数组的对象数组释放内存的正确方法

标签 c++ memory free

我有这样的东西:

class HashTable
{  
  Bucket<E>** index;
  ...
}

 ~HashTable( ) 
 {
     delete[] index;
 }

 class Bucket
 {
    E* elements
    ...
 }

 ~Bucket( ) 
 {
     delete[] elements;
 }

在这种情况下如何正确释放内存?

delete[] 索引是否足够,还是我必须循环遍历所有 Bucket-Objects 并分别删除 elemtents-array?

最佳答案

如果您使用 new 分别分配每个桶对象,您应该使用 delete 释放每个对象。
简单的规则是:
您应该分别拥有与 newnew[] 一样多的 deletedelete[] .

建议:
您可能会通过使用智能指针并避免此类内存管理问题来帮自己一个忙。

关于c++ - 在 C++ 中为包含对象数组的对象数组释放内存的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230309/

相关文章:

c++ - opencv中的imshow窗口卡住

c++ - 通过 QT C++ 连接到 SQL Server 2005

java - Java “Foo f = new Foo() ”中的对象初始化是否与在C中将malloc用作指针相同?

c - 使用函数释放双指针链表

c - malloc() 在无限循环中

c - malloc 对象上的 Free throws 错误

c++ - 在运行时链接外部库

c++ - GCC ICE——替代函数语法、可变参数模板和元组

python - python中每个函数的内存使用情况

c - C 中段错误的不稳定行为