gpt4 book ai didi

c++ - 了解 STL 库内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:54 24 4
gpt4 key购买 nike

我只是想知道 C++ 内存分配和清除中的 STL 库是如何发生的。例如,考虑一个包含类对象的 list 容器。该类可能包含任何数据类型和存储类(例如静态、常量、动态)。容器的内存会不会是容器内部对象的总和?如果我使用 clear 函数,它会销毁容器内的所有对象(使用默认析构函数吗?)还是只是从容器中删除它们的引用?请解释。

最佳答案

除了 std::array 之外,STL 容器的内部结构都存储在堆中,与容器对象本身分开。

clear 调用容器中存储的任何内容的析构函数。如果您存储对象的普通指针或引用,则不会,对象不会被销毁,因为指针和引用本身没有析构函数。如果您存储未装箱的对象或智能指针,它们将被销毁。

关于c++ - 了解 STL 库内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23288903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com