这篇文章主要介绍“C++中为什么不要泄漏任何资源”,在日常操作中,相信很多人在C++中为什么不要泄漏任何资源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++中为什么不要泄漏任何资源”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目前成都创新互联已为千余家的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、贾汪网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
P.8: Don't leak any resources(不要泄漏任何资源)
Reason(原因)
Even a slow growth in resources will, over time, exhaust the availability of those resources. This is particularly important for long-running programs, but is an essential piece of responsible programming behavior.
即使是资源的缓慢增长,经过一定时间之后,也会最终耗尽该资源的可用性。这对长时间运行的程序特别重要,也是重要编程活动中必不可少的一部分。
Example, bad(反面事例)
void f(char* name){    FILE* input = fopen(name, "r");    // ...    if (something) return;   // bad: if something == true, a file handle is leaked    // ...    fclose(input);} 译者注:由于某种原因,代码在fclose之前退出执行时,会导致文件无法关闭。
Prefer RAII:(使用RAII的更好示例)
void f(char* name){    ifstream input {name};    // ...    if (something) return;   // OK: no leak    // ...} 译者注:
资源获取即初始化(Resource Acquisition Is Initialization),或称 RAII,是一种 C++ 编程技术,它将必须在使用前请求的资源(分配的堆内存、执行线程、打开的套接字、打开的文件、锁定的互斥体、磁盘空间、数据库连接等——任何存在受限供给中的事物)的生命周期绑定与一个对象的生存期相绑定。
Note(注意)
泄漏也常被成为“任何没有被清理的东西”。更加重要的分类是“任何不会被清理的东西”。例如从堆中分配一个对象然后丢失了最后一个指向那个对象指针。这个规则不应该被理解为这样的要求:即长生命周期对象必须被在程序停止运转时释放。例如,利用进程停止运行时保证的关闭文件,释放内存处理的做法会简化代码,但是依赖严格清理规则的做法可以简单而且更安全。
Note(注意)
推行生命周期安全规则群可以排除资源泄漏。和RAII提供的资源安全机制一起使用的话,可以(通过不产生垃圾)排除“垃圾收集”的需求。再结合执行类型和边界规则群,你可以得到完全的类型和资源安全,一切都由工具保证。
Enforcement(执行建议)
- Look at pointers: Classify them into non-owners (the default) and owners. Where feasible, replace owners with standard-library resource handles (as in the example above). Alternatively, mark an owner as such using - ownerfrom the GSL.- 关注指针:按照所有者的有无(缺省为无)进行分类。如果可能,将所有者替换为标准库中的资源句柄(例如上面的示例)。使用GSL中的owner关键字标识所有者。 
- Look for naked - newand- delete- 关注直接的new和delete - 关注 
- Look for known resource allocating functions returning raw pointers (such as - fopen,- malloc, and- strdup)- 关注已知的返回原始指针的资源分配函数(例如fopen,malloc和strdup) 
到此,关于“C++中为什么不要泄漏任何资源”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
网站标题:C++中为什么不要泄漏任何资源
网页网址:http://www.scyingshan.cn/article/jgicso.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 