我应该如何为我的类定制内存分配。我见过这两种方法被广泛使用。使用自定义分配器,就像所有stl容器所做的那样,使用模板类型参数使其成为其类型的一部分。或是过载
new
和
delete
功能和可能的位置
新的
和安置
删除
也。我访问并阅读了许多关于这两种技巧的问题和答案,但我不知道哪一种应该用在特定的情况下。很明显,所有的stl容器都设计了一个定制的分配器。为什么不超载
新的
和
删除
新的
删除
我们被告知,在C++中,我们通常应该使用
新的
删除
对于一个典型的堆分配(或者更常见的智能指针,但这不是一个“智能”的讨论,这是低级的)。但是如果我们用一个分配器来分配我们的对象呢
.allocate()
.construct()
(不过,我相信最后一个函数现在已经被弃用了)。我们基本上会做同样的事情
new std::string{"Hello"}
他在做什么。
this
(即什么也没有)。我真的找不到别的了。那么线程的安全性呢?我推测,(自定义)内存管理可能是高级C++最重要的方面,所以我必须准确地理解我正在做的事情。
我的问题是,在实现自定义内存分配器(如
stl
容器)或过载
新的
,
删除
new[]
,
delete[]
,位置
新的
... 为什么?其他一些关于何时何地的良好做法和指导方针也很有帮助。提前谢谢。