【发布时间】:2011-01-12 19:25:15
【问题描述】:
我正在编写一个模板类,它将指针作为输入并存储它。该指针旨在指向由另一个类分配的对象,并交给包含 this 的类。
现在我想为这个容器创建一个析构函数。我应该如何释放这个指针指向的内存?我无法先验地知道它是数组还是单个元素。
我对 C++ 有点陌生,所以请耐心等待。我一直使用 C,Java 是我选择的 OO 语言,但是在想要学习 C++ 和我的项目的速度要求之间,我选择了 C++。
将容器从模板更改为可以实现自己的析构函数的抽象类的容器会更好吗?
【问题讨论】:
-
JonH 的回答是正确的,所以也许您应该提供模板:一个用于数组,一个不用于。另一个答案是避免使用数组,而是期望单个实例可能是也可能不是在自身之后清理的正确集合,例如 vector.
-
@Steven Sudit:我认为你应该把这个评论作为答案。
-
这种方法也可能存在线程问题 - 您无法删除在不同线程中分配的内容。
-
@Chris:通常你可以;它的跨进程会杀死你。但是单个进程在线程之间共享堆。这当然取决于实现。
-
另外,@Alex:如果您是 C++ 新手,那么尝试找到可以理解的干净方法可能会很困难。通常更容易说“我正在打电话给
delete,所以不要给我数组”,然后试着让它双向工作。理想情况下,人们无论如何都会使用vector而不是原始内存数组。
标签: c++ templates destructor