c++ - 将 auto_ptr 与 new char[n] 一起使用是否错误

标签 c++ stl memory-leaks auto-ptr

如果我声明一个临时自动删除的字符缓冲区使用

std::auto_ptr<char> buffer(new char[n]);

然后当缓冲区超出范围时,缓冲区会被自动删除。我会假设缓冲区是使用 delete 删除的。

但是缓冲区是使用 new[] 创建的,所以严格来说应该使用 delete[] 删除缓冲区。

这种不匹配可能导致内存泄漏的可能性有多大?

最佳答案

对用 new[] 分配的指针调用 delete 的行为是 undefined .如您所料, auto_ptr does call delete当智能指针超出范围时。您需要担心的不仅仅是内存泄漏——崩溃和其他奇怪的行为也是可能的。

如果不需要转移指针的所有权,Boost的scoped_array类可能是您正在寻找的。

关于c++ - 将 auto_ptr 与 new char[n] 一起使用是否错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261336/

相关文章:

c++ - 没有带有 unordered_map 的模板函数实例

c++ - 从 STL 列表中删除特定节点

apache-flex - AS3大型游戏性能随时间下降

c++ - 使用 if 条件对数字进行分组

c++ - 在容器上的循环中同时访问更多元素的 STL 方法

java - Ignite DataStreamer 中可能存在内存泄漏

c - 在函数内部分配内存时发生内存泄漏

c++ - 将字符串转换为 double 和 int。如何?

c++ - 在 C++ 中,在 for 循环之外使用 "if"还是在 for 循环中使用 "if"效率更高

c++ - 在 txt c++ 中读取行