10

我只是意识到动态内存管理标准库的某些功能已在 C++17 中被弃用。一个例子是get_temporary_buffer

template< class T >
std::pair< T*, std::ptrdiff_t > get_temporary_buffer( std::ptrdiff_t count );

有人可以解释为什么吗?我可以期望在 C++20 中有替代方案吗?

4

1 回答 1

10

根据弃用它的提案

如果今天提出这个 API,它会被认为是一个不完整的想法。作为一个函数式 API,如果分配缓冲区的函数泄漏,它缺乏异常安全性,但我们没有提供类似 RAII 的包装器来促进安全使用。

有人建议,这个 API 的所有当前实现实际上并不比常规new运算符执行更有效的分配,如果确实如此,我们应该认真考虑弃用这个工具。否则,我们可能应该使用适当的保护/包装类来完成设计,并鼓励供应商提供错过的优化机会。

简而言之,只需使用new/ delete。或者你自己的临时内存分配器;哪个最适合您的需求。

于 2017-12-19T14:29:19.280 回答