为什么我应该使用 std::get_temporary_buffer
? 标准说明如下:
获取一个指向存储区的指针,该指针足以存储多达 n 个相邻 T 对象。
我认为缓冲区将在堆栈上分配,但事实并非如此。根据 C + + 标准,这个缓冲区实际上不是临时的。与不构造对象的全局函数 ::operator new
相比,这个函数有什么优势。下面的陈述对等吗?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
这个函数只存在于语法糖吗? 为什么它的名字里有 temporary
?
在 多布医生日记,1996年7月1日中提出了一个用于实现算法的用例:
如果不能分配缓冲区,或者缓冲区小于请求的缓冲区,算法仍然能正常工作,只是速度变慢了。