与内存堆相关的C++链接列表(STD::list)是否使用新的? 使用VisualStudio作为C++;std::list是否使用new来分配节点?我问这个问题是因为我将内存堆编码为一个挑战,如果它使用新的,这会降低内存堆的效率

与内存堆相关的C++链接列表(STD::list)是否使用新的? 使用VisualStudio作为C++;std::list是否使用new来分配节点?我问这个问题是因为我将内存堆编码为一个挑战,如果它使用新的,这会降低内存堆的效率,c++,heap-memory,C++,Heap Memory,内存堆根据这个问题,首先回答: 如果它确实使用了new,我将如何修复它与上面问题的答案中列出的内存堆使用链表的关系 谢谢。是的,它确实通过其分配器参数间接使用new。您可以编写使用堆的自定义分配器,并用它实例化列表。是的,它确实通过其分配器参数间接使用new。您可以编写使用堆的自定义分配器,并用它实例化列表。所有标准模板库容器都使用称为分配器的抽象来分配内存,默认为std::分配器。这个默认分配器确实使用new,但这并不妨碍您编写一个不使用new的分配器 从中可以看出,第二个模板参数是要使用的分

内存堆根据这个问题,首先回答:

如果它确实使用了new,我将如何修复它与上面问题的答案中列出的内存堆使用链表的关系


谢谢。

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

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

所有标准模板库容器都使用称为分配器的抽象来分配内存,默认为std::分配器。这个默认分配器确实使用new,但这并不妨碍您编写一个不使用new的分配器


从中可以看出,第二个模板参数是要使用的分配器。

所有标准模板库容器都使用一个称为分配器的抽象来分配内存,默认为std::分配器。这个默认分配器确实使用new,但这并不妨碍您编写一个不使用new的分配器


可以看出,第二个模板参数是使用的分配器。

STL容器,因为设计是基于C++标准中的STL的,它有一个指定分配器的模板参数。已使用该分配器。它默认为一个提供了分配器的库,但是您可以通过使用自定义堆的自己的.< /p> STL容器,因为设计是基于C++标准中的STL的,它有一个指定分配器的模板参数。已使用该分配器。它默认为库提供的分配器,但您可以传递使用自定义堆的自己的分配器。

是的,默认情况下std::list使用std::分配器,后者使用new


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

是的,默认情况下,std::list使用std::allocator,后者使用new


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

是的。当然,它如何使用new取决于实现,但它必须在某个地方使用某个分配器,而新的实现应该位于这些分配器的根//开始等待有人指出一个现实生活中的奇怪的球的情况下,它不是重复;这个问题不涉及内存堆。为什么新操作符会破坏内存堆?为什么不重写new和delete并让它们使用堆实现呢?是的。当然,它如何使用new取决于实现,但它必须在某个地方使用某个分配器,而新的实现应该位于这些分配器的根//开始等待有人指出一个现实生活中的奇怪的球的情况下,它不是重复;这个问题不涉及内存堆。为什么新操作符会破坏内存堆?为什么不重写new和delete并让它们使用您的堆实现呢?为了学究,容器使用分配器,而std::allocator是默认的。但是并不要求分配器必须是std::allocator。要学究式,容器使用分配器,而std::allocator是默认值。但是不要求分配器是std::allocator。