簡體   English   中英

當真正釋放STL中的內存時

[英]when real FREE the memory in STL

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分配的內存只會在程序退出時返回給操作系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM