当前位置:网站首页>13 以对象管理资源
13 以对象管理资源
2022-07-26 10:32:00 【JeffyGao】
条款- 13 以对象管理资源
Remember:
1- 为防止资源泄露,请使用 RAII(资源获取初始化) 对象,它们在构造函数中获得资源并在析构函数中释放资源。
2- 两个常被使用的 RAII class 分别是 tr1::shared_ptr 和 auto_ptr。前者通常是较佳选择,因为其 copy 行为比较直观。若选择 auto_ptr,复制动作会使它(被复制物)指向 null。
所谓 资源 就是,一旦使用了它,将来就必须还给系统。C++ 最长用的就是动态分配内存,如果不释放的话,就会造成内存泄露。
本条款针对的是所分配的 class 对象。
常规做法:在使用完对象后就delete其对象。当代码数量较多的时候一般用函数进行封装。
但是这样会遇到一个问题:有时候还没来得及删除时,就遇到一个 return。这样就导致了内存泄露。
解决方法:C++ 的“析构函数自动调用机制”。
两种常用的只能指针: auto_ptr、tr1::shared_ptr。
当正常地使用 析构函数自动删除的时候两个智能指针形式差不多。但是当使用复制行为进行赋null的时候,tr1::shared_ptr明显看着更舒服。
【注】auto_ptr 和 tr1::shared_ptr 都是在析构函数内做 delete 而不是 deletep[]。那意味着在动态分配而得的 array 身上使用 auto_ptr或 shared_ptr是个馊主意。其实定义vector、string就可以代替array了。
边栏推荐
- Cause: couldn‘t make a guess for 解决方法
- 详细解析js中的混合方式构造对象(构造加属性,原型加方法)
- videojs转canvas暂停、播放、切换视频
- [Halcon vision] image filtering
- js下载文件,FileSaver.js导出txt、excel文件
- [Halcon vision] threshold segmentation
- MLX90640 红外热成像仪测温传感器模块开发笔记(六)红外图像伪彩色编码
- String null to empty string (what does empty string mean)
- Google与Pixar开发Draco支持USD格式 加速3D对象传输<转发>
- Okaleido ecological core equity Oka, all in fusion mining mode
猜你喜欢

码云,正式支持 Pages 功能,可以部署静态页面

Our Web3 entrepreneurship project is yellow

Introduction to data analysis | kaggle Titanic mission

Agenda express | list of sub forum agenda on July 27

Unit test, what is unit test and why is it so difficult to write a single test

【Halcon视觉】编程逻辑

Learning about tensorflow (I)

Okaleido ecological core equity Oka, all in fusion mining mode
![[Halcon vision] morphological expansion](/img/ce/abaca036fce5b67dfe6ac361aecfea.png)
[Halcon vision] morphological expansion

【Halcon视觉】图像滤波
随机推荐
我们的Web3创业项目,黄了
Employee information management system based on Web
Inheritance method of simplified constructor (I) - combined inheritance
PLC概述
About the declaration and definition of template functions [easy to understand]
3.1 leetcode daily question 6
string null转空字符串(空字符串是什么意思)
Using native JS to realize custom scroll bar (click to reach, drag to reach)
What is wrong about the description of function templates (how to solve link format errors)
Function template parameters (where are the function parameters)
Using undertow, Nacos offline logout delay after service stop
少了个分号
Nacos custom service change subscription
Cause: couldn‘t make a guess for 解决方法
头歌 Phoenix 入门(第1关:Phoenix 安装、第2关:Phoenix 基础语法)
【Halcon视觉】图像滤波
js下载文件,FileSaver.js导出txt、excel文件
关于模板函数声明与定义的问题[通俗易懂]
移动端双指缩放事件(原生),e.originalEvent.touches
centos8(liunx)部署WTM(ASP.NET 5)使用pgsql