【发布时间】:2018-02-22 22:35:22
【问题描述】:
__default_alloc_template 的两个静态成员已被用于管理其内存池:
static char* _S_start_free;
static _Obj* __STL_VOLATILE _S_free_list[_NFREELISTS];
来自操作系统的分配器查询堆空间如下:
_S_start_free = (char*)malloc(__n);
然后它使用这个堆的一部分构建一个名为_S_free_list的空闲内存列表。
但我找不到任何可以将内存返还给操作系统的代码,例如:
free(_S_start_free);
我很困惑。
- 这取决于系统的清洁?
- 或者其他地方有清理代码?
帮帮我。
【问题讨论】:
-
如果它要在程序的生命周期内生存,它可能不需要清理自己
-
在现代操作系统上,程序在虚拟内存中运行。当程序结束时,内存映射就消失了。
标签: c++ memory-management stl