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;
}
}
我想知道,什么时候真正免费提供免费清单?
答案 0 :(得分:1)
无法保证STL使用内存池(尽管很常见)。
这取决于实现(编译器,库,版本,操作系统,机器架构,月亮的阶段)。一个常见的答案是,使用new分配的内存只会在程序退出时返回给操作系统。