gpt4 book ai didi

c++ - 当真正释放STL中的内存时

转载 作者:太空狗 更新时间:2023-10-29 23:00:13 24 4
gpt4 key购买 nike

STL的分配器使用了内存池技术,它只将需要释放的内存添加到空闲列表中,像这样:

static void deallocate(void* __p, size_t __n)
{
if (__n > (size_t) _MAX_BYTES)
malloc_alloc::deallocate(__p, __n);
else {
_Obj* __STL_VOLATILE* __my_free_list = _S_free_list + _S_freelist_index(__n);
_Obj* __q = (_Obj*)__p;
__q -> _M_free_list_link = *__my_free_list;
*__my_free_list = __q;
}
}

我想知道,什么时候真正释放空闲列表?

最佳答案

不能保证 STL 使用内存池(尽管它很常见)。

这将取决于实现(编译器、库、版本、操作系统、机器架构、月相)。一个常见的答案是,用 new 分配的内存只会在程序退出时返回给操作系统。

关于c++ - 当真正释放STL中的内存时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269444/

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