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的内存只会在程序退出时返回到操作系统。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句