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