c++安全编写对象池中文版

343 篇文章 0 订阅
48 篇文章 0 订阅

原文地址

#指示 一次
#包含<>
#包含<双队>

构 连接{
    串 标识;
};<整 N>类 对象池 终:不可复制{//@2,编译期提示错误
    //@10,加个终,表示不可继承.
    //不可复制,删除默认构造,拷贝构造,禁用(移动,移动赋值)
    对象池(大小型 初化大小){//未限制初化大小.
        静断(N<500,"初化大小不能大于500");(大小型 i=0;i<初化大小;i++){.压后(新 连接());
        }
    }//用运行时来判断不好,不如编译时:
    静 对象池&(){//返回&,这样更安全.
        静 对象池<N>p;中 p;
    }//@11,全局唯一.
    /*~对象池(){
        对(双队<连接*>::步 它=池.开始();它!=池.尾();它++){
            连接*p=*它;
            删 p;
        }//@4,析构函数无用了
    }*/
    //可以根据共针,知道外面的链接是否释放.

    用 删型=函数<(连接*)>;
    独针<连接,删型>获取(){
        独锁<互斥锁>l;//@8,加个锁.
        //一种是`域警卫`,一种是`独警卫`.(空的()){中 无效;}
        独针<连接,删型>(.().释放(),
        [](连接*t){//构建的时候,只要你删了该针,.压后(独针(连接)t);
        });//获取的时候,就准备好了释放了.弹前();中 针;
    }//@6共针->独针了.//该针就被放进池里面了

    /*
    空 释放(连接*p){//需要手动释放,不安全
        如(p==空针)p=造共<连接>();//@1,加
        池.压后(p);
    }//未检查连接参数,删了,变成空指针,则下次出错
    //现在野指针又来了,
    //外部删了`指针`//@5整个释放都不要了
    */

    极 空的(){
        中 池.空的();
    }

    大小型 大小(){
        中 池.大小();
    }:
    双队<独针<连接>>;//@3,*->共针.
};
//内存安全,就是对象生命期的问题,裸指针不安全(手动释放,无法可靠的检查指针是否释放)
//三种指针:共针,独针,弱针(用来监视共针的生命期,检查指针是否释放)
//@7线程安全,加个锁.
//@9,不可拷贝,复制,移动,不可继承.
//c++安全设施:常,盖,无异,严格序表达式求值,数组,变量,安全的stl算法....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值