STL中的内存分配方式——2
来源:互联网 发布:javascript apply 编辑:程序博客网 时间:2024/04/28 14:28
今天又看了点stl源码分析,记下学到的知识
构造和析构:(这个跟前面说的方式是一样的)
在stl 中 内存分配和构造是分为两个部分的,而精髓是在内存分配中的特别是第二级内存分配,不过这里不涉及到内存分配,只是重复下前面说到的构造和析构:
构造:通过 placement new 在给定的一块空间上构造一个新的对象或者赋予新的值。
析构:通过调用析构函数来析构掉对象,如果这块空间的内容是has_trivial_destructor类型,那么直接就忽略掉析构。
构造:
析构:
单个元素空间析构:
如果是一段空间:
我这里省掉了 对元素类型的识别,因为有些类型的析构函数是不需要调用的,或者像内置类型就根本没有析构函数。但是因为现在还不知道怎么判断元素的数值性别,所以就省掉了很多处理。
如果是一段字符空间:
就直接忽略。
空间分配的问题在STL中有2级处理方式,这要看分配空间的大小,如果大于128bytes就用第一级方式,这里说下第一级处理方式,第二级后面再说。
分配空间:
是直接用malloc来完成的,但是我这里没有写明如果分配失败的情况,而是直接exit出来,书上模拟了一个set_new_handler方法,然后不停的循环malloc。
因为set_new_handler这个实现方式看不懂,所以就不能自己实现。
重新分配空间:
然后是释放空间,调用 free 来直接释放。
好了,上面就是今天看到的书上面的知识,感觉上面都是浮云,精髓是在第二级分配方式上面的。
- STL中的内存分配方式——2
- STL中的内存分配方式——1
- STL中的内存分配方式——3
- STL中的内存分配方式
- STL内存分配方式
- C++——内存分配方式详解
- C++中的变量内存分配方式
- C++中的变量内存分配方式
- 学习笔记—java中的内存分配
- STL内存分配
- STL内存分配
- STL---vector内存分配
- STL内存分配
- stl-vector内存分配
- C++ STL中的vector的内存分配与释放
- C++ STL中的vector的内存分配与释放
- C++ STL中的vector的内存分配与释放
- C++ STL中的vector的内存分配与释放
- ICE应用实例
- amr-wb,转自刘品
- CDocManager
- 用了分页的组件 IIRF 分页无效 方法
- DD_belatedPNG透明,解决IE6不支持PNG绝佳方案
- STL中的内存分配方式——2
- C语言面试题(与、或、异或、取反、左移和右移)
- HSL和HSV色彩空間
- hibernate 报错:Could not find a getter for ~
- 2011-3-7 职场第一天
- OPhone程序开发入门之音乐播放器
- 一个睡五分钟等于六个钟头的方法
- 转 成真 使用ADO封装类的数据库程序开发实例[第二版] (上)
- java.lang.IllegalAccessException:Class org.apache.axis.providers.java.JavaProvider can not access a member of class MyMath with