上一篇我们介绍了STL对象的构造与析构,这篇介绍STL内存的配置与释放。

STL有两级空间配置器,默认是使用第二级。第二级空间配置器会在某些情况下去调用第一级空间配置器。空间配置器都是在allocate函数内分配内存,在deallocate函数内释放内存。

 

第一级空间配置器

 

第一级配置器只是对malloc函数和free函数的简单封装,在allocate内调用malloc,在deallocate内调用free。同时第一级配置器的oom_malloc函数,用来处理malloc失败的情况。如下所示:

allocate对malloc函数简单封装 :

大学生就业培训,高中生培训,在职人员转行培训,企业团训

static void *allocate(size_t n)
{          void *result = malloc(n);           if (NULL == result)
                    result = oom_malloc(n);           return result;
}

大学生就业培训,高中生培训,在职人员转行培训,企业团训

 

deallocate对free函数简单封装 :

static void deallocate(void *p, size_t) { free(p); }

 

oom_malloc调用外部提供的malloc失败处理函数,然后重新试着再次调用malloc。重复执行此过程,直到malloc成功为止 : 

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式