当前位置: 首页 > news >正文

山东省职业能力建设处网站网站的空间是服务器吗

山东省职业能力建设处网站,网站的空间是服务器吗,做网站开发公司,建设音乐网站功能定位3.资源管理 条款13#xff1a;以对象管理资源 以对象管理资源对于传统的堆资源管理#xff0c;我们需要使用成对的new和delete#xff0c;这样若忘记delete就会造成内存泄露。因此#xff0c;我们应尽可能以对象管理资源#xff0c;并采用RAII#xff08;Resource Acqu…3.资源管理 条款13以对象管理资源 以对象管理资源对于传统的堆资源管理我们需要使用成对的new和delete这样若忘记delete就会造成内存泄露。因此我们应尽可能以对象管理资源并采用RAIIResource Acquisition Is Initialize资源取得时机便是初始化时机让析构函数负责资源的释放。 原书此处提到的auto_ptr的内容已经过时在 C11 中通过专一所有权来管理RAII对象可以使用std::unique_ptr通过引用计数来管理RAII对象可以使用std::shared_ptr。 std::unique_ptrInvestment pUniqueInv1(CreateInvestment()); std::unique_ptrInvestment pUniqueInv2(std::move(pUniqueInv1)); // 转移资源所有权std::shared_ptrInvestment pSharedInv1(CreateInvestment()); std::shared_ptrInvestment pSharedInv2(pSharedInv1); // 引用计数1智能指针默认会自动delete所持有的对象我们也可以为智能指针指定所管理对象的释放方式删除器deleter std::unique_ptrInvestment, decltype(GetRidOfInvestment)* pUniqueInv(CreateInvestment(), GetRidOfInvestment); std::shared_ptrInvestment pSharedInv(CreateInvestment(), GetRidOfInvestment);为防止资源泄露请使用RAII对象它们在构造函数中获得资源并在析构函数中析构函数中释放资源两个常被使用的RAII classes分别是shared_ptr和unique_ptr。前者通常是较佳的选择因为其copy行为比较直观。 条款14在资源管理类中小心拷贝行为 我们应该永远保持这样的思考当一个RAII对象被复制会发生什么事 选择一禁止复制 许多时候允许RAII对象被复制并不合理如果确是如此那么就该明确禁止复制行为条款 6 已经阐述了怎么做这件事。 选择二对底层资源祭出“引用计数法” 正如std::shared_ptr所做的那样每一次复制对象就使引用计数1每一个对象离开定义域就调用析构函数使引用计数-1直到引用计数为0就彻底销毁资源。 选择三复制底层资源 在复制对象的同时复制底层资源的行为又被称作深拷贝Deep copying例如在一个对象中有一个指针那么在复制这个对象时就不能只复制指针也要复制指针所指向的数据。 选择四转移底层资源的所有权 和std::unique_ptr的行为类似永远保持只有一个对象拥有对资源的管理权当需要复制对象时转移资源的管理权。 条款15在资源管理类中提供对原始资源的访问 Investment* pRaw pSharedInv.get(); // 显式访问原始资源 Investment raw *pSharedInv; // 隐式访问原始资源当我们在设计自己的资源管理类时也要考虑在提供对原始资源的访问时是使用显式访问还是隐式访问的方法还是两者皆可。 class Font { public:FontHandle Get() const { return handle; } // 显式转换函数operator FontHandle() const { return handle; } // 隐式转换函数private:FontHandle handle; };APIs往往要求访问原始资源所以每一个RAII class应该提供一个“取得其所管理之资源”的方法对原始资源的访问可能经由显示转换或隐式转换。一般而言显示转换比较安全但隐式转换对客户比较方便。 条款16成对使用new和delete要采取相同形式 使用new来分配单一对象使用new[]来分配对象数组必须明确它们的行为并不一致分配对象数组时会额外在内存中记录“数组大小”而使用delete[]会根据记录的数组大小多次调用析构函数使用delete则仅仅只会调用一次析构函数。对于单一对象使用delete[]其结果也是未定义的程序可能会读取若干内存并将其错误地解释为数组大小。 int* array new int[10]; int* object new int;delete[] array; delete object;需要注意的是使用typedef定义数组类型会带来额外的风险 最好不要对数组形式做typedef动作 typedef std::string AddressLines[4];std::string* pal new AddressLines; // pal 是一个对象数组而非单一对象delete pal; // 行为未定义 delete[] pal; // 正确如果你在new表达式中使用[ ],必须在相应的delete表达式中也使用[ ]。如果你在new表达式中不适用[], 一定不要在相应的delete表达式中使用[ ] 条款17以独立语句将 new出的对象置入智能指针 原书此处所讲已过时现在更好的做法是使用std::make_unique和std::make_shared auto pUniqueInv std::make_uniqueInvestment(); // since C14 auto pSharedInv std::make_sharedInvestment(); // since C11参考知乎
http://www.yingshimen.cn/news/54263/

相关文章:

  • 网站制作哪里做得好教育网站制作定制
  • 可以做砍价链接的网站济宁市任城区建设局网站
  • 想见你一个网站怎么做网站权重低
  • 企业网站的建设报价网站页面锚点怎么做
  • 有哪些做电子商务的网站郑州国际装备制造业会展网站的建设
  • 什么网站可以做宝宝相册现在建网站做推广能赚钱吗
  • 丽水公司网站建设深圳市住房与建设局网站
  • 重庆网站推广付费gif图标网站
  • 美食网站首页怎么做公司网站建设深
  • 手机集团网站建设二级域名网站建设
  • 来宾城乡建设局网站家居企业网站建设平台
  • 免费个人网站空间申请东莞网站竞价推广
  • 有网站代码 如何建设网站网站空间怎样设置用户名和密码
  • 网站建设细化流程标准网站建设公司
  • 咸阳城乡建设局网站php mysql的网站开发
  • 电商网站建设简单代码网页主题资源网站建设步骤
  • 专业网站开发哪家公司好网网站站建建站站
  • 庄行网站建设做网页要钱吗
  • 网站实现多语言青岛知名网站建设
  • 南京文化云网站建设为何要屏蔽网站快照
  • 企业综合门户型网站vue企业门户网站模板
  • 信阳制作网站ihanshi网站制作价格 上海
  • 网站建设发展好不好富阳招聘网
  • 不会编程 做网站wordpress 开发小程序
  • 有什么展厅设计做的好的网站网站建设包括哪些方面的费用
  • 电子商务网站建设模式做景观要用的植物网站
  • 医美类网站如何做推广网络营销网站类型
  • 必应网站首页的图片怎么做的网站添加锚点
  • 免费搭建淘宝客网站windows软件开发
  • 信息产业部icp备案中心网站wordpress 文章内容不显示