【发布时间】:2018-06-02 00:07:28
【问题描述】:
我刚刚意识到Dynamic memory management 标准库的某些函数已在 C++17 中被弃用。一个例子是get_temporary_buffer:
template< class T >
std::pair< T*, std::ptrdiff_t > get_temporary_buffer( std::ptrdiff_t count );
有人可以解释为什么吗?我可以期待 C++20 中有替代方案吗?
【问题讨论】:
-
它从未被广泛使用,实现通常只是使用
operator new分配一块内存。 -
好的,谢谢。我认为这是针对小缓冲区的某种优化内存池。
-
AFAIK 它通常用于实现
std::inplace_merge,它可能会使用任何分配的内存,即使它没有所要求的那么多内存:内存越多,速度越快,但即使没有内存,算法也是如此仍然有效。
标签: c++ memory-management language-lawyer c++17 c++20