【发布时间】:2013-11-20 10:00:02
【问题描述】:
如果我重写 operator new 和 operator delete(或传递自定义删除器),传递分配器有什么用? shared_ptr 会在构造和解构之外的其他时间进行分配和释放吗?
【问题讨论】:
-
如果您为您的程序提供了一个内存池,您需要分配一个内存池,那么您可能会提供一个分配器,这不是真的吗? IOW,如果我管理自己的内存,无论出于何种原因,我都希望系统按照我认为合适的方式“分配”内存,即,如果我没记错的话,不会占用大量不需要的空间,不幸的是在某些情况下。
-
无论如何我都会写一个分配器,因为容器需要它。我在这里要问的是为什么 shared_ptr 需要分配器,因为指向已分配内存的指针已经传递给构造函数。我应该期望 shared_ptrs 在幕后自行分配东西吗?
-
我可能会小心地说分配器是一般容器所需要的。正如我所读的那样,该标准允许分配器,但正如您所说的那样不是必需的。
queue在容器类中,但不需要提供分配器。 -
自然而然。我的意思是说我们将使用的容器需要它。 :)
标签: c++ memory-management shared-ptr