学习AA大神c++设计新思维笔记:04小内存分配

小内存分配

小型对象不能存在栈上?廉价而快速的动态分配.在堆上.主要就是各种策略类.
c堆分配器的简单包装.c通常分配(数百~数Kb).而c++默认管理为8个字节.如果是小对象,则很浪费.间接层(pimpl),则为堆
内存搜索匹配算法:最先,最佳,最差,随机,回收是也要来次线性搜索.主要探讨的就是根据小型对象的专用分配器.其实就是加个限制条件,来求最佳解.

构 块
{
    空 初化(整 块大小,正 符 块);*分配(整 块大小);
    空 回收(*p,整 块大小);
    空 发布();

    极 有块(*p,整 块长);
    极 有可用(正 符 块数);
    极 是填充();

    正 符*mp数据;//
    正 符 m第一可用块;
    正 符 m可用块;//可用总块数,符<256
};//pod

四个层级.我不喜欢.我觉得三个层级最好.
最底层,能省则省.未定义构造,析构,赋值函数.未设置块大小,未被使用的第一个字节放下一个未被使用区块的索引号.即先就在mp数据里面记下下个位置.

(;i!=;p+=块大小)
        *p=++i;//每块上.加上索引

全靠这个.分配和归还区块时,常数时间.分配只分配一个N字节(块大小,可大可小)?,块不知道块大小.
第2层:固定大小分配器.
就是一个向量<块>,同样,分配与回收.回收时可用高速缓冲.但对小对象,这一办法,好像没多大用.其实,我感觉,可以用一个大块如1M来统一分配.不像它这样,一层层的.
小型对象可能:批量分配,顺序归还,逆序归还,偶尔归还(高速缓冲有用.最好的方式还是根据需求,实现相应策略.用户组装.析构函数定义为虚,则删 p时能够正确的删.
第3层,第四层,都是包装.
当前有pmr,好像很厉害.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值