【发布时间】:2015-07-21 12:27:33
【问题描述】:
std::get_temporary_buffer 返回一个std::pair,其中包含一个指向已分配存储的开头和已分配对象数量的指针,其对应对象的唯一目的:std::return_temporary_buffer 是释放先前使用std::get_temporary_buffer 分配的内存.
这两个函数都位于<memory> 标头上,其主要目的是提供工具来增强内存管理(顾名思义)并使内存管理更加安全。
关于内存管理的安全性,<memory> 标头还提供了智能指针实用程序,它允许以类似RAII 的方式管理内存,从而使内存管理异常安全。
C++14 还添加了std::make_unique 辅助函数,因此我们现在可以避免在许多情况下使用原始指针。
通过所有这些努力减少原始指针的使用,意识到std::get_temporary_buffer 返回的是原始指针而不是智能指针是相当令人困惑的。这就是我想问的原因:
-
std::get_temporary_buffer是否有任何理由返回原始指针而不是返回智能指针? - 如果这种“老式”方式手动分配和取消分配内存是有原因的,那么智能指针无法实现的目标是什么?
【问题讨论】:
标签: c++ c++11 memory-management