与内存堆有关的C 链接列表(STD ::列表)是否使用新的

Does the C++ linked list (std::list) use new, in relation to a memory heap?

本文关键字:列表 内存 是否 STD 链接      更新时间:2023-10-16

使用C 的Visual Studio;STD ::列表是否使用新来分配节点?我之所以问,是因为我将内存堆编码为挑战,如果它使用了新的,则降低了内存堆的有效性。

根据这个问题,内存堆,第一个答案:如何实现内存堆

如果它确实使用了新的,我将如何修复它(与使用上述问题答案中概述的内存堆的链接列表有关)?

)?

谢谢。

stl容器(因为设计基于stl基于STL)中的C 标准中具有模板参数,该参数指定分配器。使用该分配器。它默认为库提供的分配器,但是您可以通过自己的自定义堆。

所有标准模板库容器都使用抽象(称为分配器)来分配内存,默认为 std::allocator<T>。此默认分配器确实使用了新的,但这并不排除您使用的(写)一个不使用。

您可以从本文档中看到第二个模板参数是要使用的分配器。

是的,它确实通过其Allocator参数间接使用new。您可以编写使用堆的自定义分配器,并与之实例化 list s。

是的,std :: list by默认使用std :: Aralocator,使用new

但是您可以编写自己的分配类别类,该类使用您想要的任何分配方案,并将其作为第二个模板参数传递给std :: list。