C++ 分配器能否有效地解决内存碎片问题

C++ 分配器能否有效地解决内存碎片问题,c++,memory-management,malloc,new-operator,allocation,C++,Memory Management,Malloc,New Operator,Allocation,我知道什么是内存碎片,以及为什么C/C++中的malloc或new会导致这个问题 以下是关于内存碎片的链接: 我的问题是std::allocator是否可以有效地解决这个问题 说我有一块带有std::allocator的内存,如果我在这个std::allocator上频繁使用new和destruct,我会有同样的问题吗:内存碎片?如果是这样,那么还有其他方法来解决C++中的这个问题吗?编写编译器的C++库的人是很聪明的,知道他们在做什么。为最常见和流行的用例优化这些低级细节付出了大量的汗水和眼泪

我知道什么是内存碎片,以及为什么C/C++中的
malloc
new
会导致这个问题

以下是关于内存碎片的链接:

我的问题是
std::allocator
是否可以有效地解决这个问题


说我有一块带有
std::allocator
的内存,如果我在这个
std::allocator
上频繁使用
new
destruct
,我会有同样的问题吗:内存碎片?如果是这样,那么还有其他方法来解决C++中的这个问题吗?

编写编译器的C++库的人是很聪明的,知道他们在做什么。为最常见和流行的用例优化这些低级细节付出了大量的汗水和眼泪。除非一个应用程序的内存分配和使用模式在某种程度上是奇怪的、独特的,并且在左边的字段中出现,这个应用程序不太可能比它的自己的分配器更聪明,并且比标准的C++库的一个更好的工作。@ SamVarshavchik,你的意思是使用<代码> STD::分配器< /C> >一般可以避免内存碎片吗?我刚刚意识到,
std::allocator
与内存碎片无关<与
new
new[]
相比,code>std::allocator只允许我们拥有更多的控制权。Ofc,如<代码> STD::分配器< /C>指定内存区域,与原代码<新>代码>相比,它可能会提高性能。编写编译器的C++库的人非常聪明,知道他们在做什么。为最常见和流行的用例优化这些低级细节付出了大量的汗水和眼泪。除非一个应用程序的内存分配和使用模式在某种程度上是奇怪的、独特的,并且在左边的字段中出现,这个应用程序不太可能比它的自己的分配器更聪明,并且比标准的C++库的一个更好的工作。@ SamVarshavchik,你的意思是使用<代码> STD::分配器< /C> >一般可以避免内存碎片吗?我刚刚意识到,
std::allocator
与内存碎片无关<与
new
new[]
相比,code>std::allocator只允许我们拥有更多的控制权。Ofc,因为
std::allocator
指定了内存区域,所以与原始
new
相比,它可能会提高性能。