问题描述
我正在阅读
auto_ptr使用" delete"在它的析构函数而不是delete []。
文章是最新的,所以我想知道这对于任何托管实现是否一般都是真的
。
Hi, I was reading on http://www.kuro5hin.org/story/2005/10/31/53857/831
that auto_ptr uses "delete" in its destructor instead of delete[]. The
article is fairly recent, so I was wondering if this is true in general
for any hosted implementation.
推荐答案
是的,这是真的,我也遇到过这个问题,所以我最初复制了
并粘贴了一个auto_ptr实现并更改了一行删除[]。
但是现在我使用了boost ,我认为这是一个好主意。看看boost smart
指针,如boost :: scoped_array。
Andrew
Yes this is true, I also encountered this problem, so I originally copied
and pasted a auto_ptr implementation and change the one line to delete[].
But now I use boost, which I think a far better idea. Look at boost smart
pointers such as boost::scoped_array.
Andrew
只需使用向量。
-
魔术取决于传统和信仰。它不欢迎观察,
也不会通过实验获利。另一方面,科学的经验基于
;它可以通过观察和实验来纠正。
Just use a vector.
--
Magic depends on tradition and belief. It does not welcome observation,
nor does it profit by experiment. On the other hand, science is based
on experience; it is open to correction by observation and experiment.
如果你需要一个数组,那么你不应该使用auto_ptr,并且
而是使用std :: vector。
auto_ptr表示单个对象,std :: vector表示
多个对象。
If you need an array, then you should not be using auto_ptr, and
instead use std::vector.
auto_ptr represents a single object, and std::vector represents
multiple objects.
这篇关于auto_ptr内存泄漏与数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!