1
我想优化下一个方法如何创建动态大小的缓冲区的std :: make_shared
auto MakeBuffer(size_t size)
{
return std::shared_ptr<uint8_t>{new uint8_t[size], std::default_delete<uint8_t[]>()};
}
正如你可以看到缓存两个阶段创建:
- 内存分配的缓冲区
- shared_ptr的创建(和存储器被分配用于在引擎盖下一个控制 对象)
在一般情况下,我们可以通过使用std :: make_shared避免双重分配。但我怎么能做到动态大小缓冲区? std :: allocate_shared不是解决方案(如果我理解正确),因为自定义分配器只用于创建对象而不是控制块。
编辑。在缓冲区清洗
优化之前,修复。你当前的方法被破坏了(认为'new/delete'与'new []/delete []') – juanchopanza