从原始指针构造时,shared_ptr是否分配?

时间:2019-11-18 16:23:20

标签: c++ shared-ptr pool lock-free

据我了解shared_ptr,它包含一个指向控制块的指针,该块包含原始指针的强计数和弱计数。

我处于需要无锁分配的情况,因此我可以从池分配的内存中分配原始指针,然后使用自定义删除器制作一个唯一的指针以将其放回池中,到目前为止好。

但是对于shared_ptr,如果我使用这些原始指针和自定义分配器之一构造一个共享指针,它是否在那个时候分配了控制块?

是否可以通过无锁方式为控制块提供内存?

1 个答案:

答案 0 :(得分:3)

  

但是对于shared_ptr,如果我使用这些原始指针和自定义分配器之一构造一个共享指针,它是否在那个时候分配了控制块?

是的

  

是否可以通过无锁方式为控制块提供内存?

shared_ptr的构造函数具有接受自定义分配器的重载。

请参阅some shared_ptr documentation

(我不太清楚whether the deleter will also be allocated by your custom allocator。)