码迷,mamicode.com
首页 > 编程语言 > 详细

C++ RAII特性

时间:2018-11-16 17:25:15      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:实现   ...   构造函数   运行   let   解决   析构   不用   处理   

C++作为一门Native Langueages,在C++98/03时代,资源管理是个大问题。而内存管理又是其中一个大问题。申请的堆内存需要手动分配和释放,为了确保内存正确释放,一般原则是"谁分配谁负责释放",但软件工程的复杂性、程序员的编码水平参差不齐等仍然导致内存泄漏、空悬指针等问题。严重的内存泄漏可能很快导致服务器内存耗光而运行崩溃。

托管语言为了解决这种问题引入了GC,把内存管理交给机器处理。而C++解决办法一个是手动重启,一个就是今天的主角RAII。

RAII全称(Resource Acquisition is Initialization),即对象构造时所需资源应在构造函数中初始化,对象析构时释放这些资源。这种范式意味着应该用类来封装和管理资源。现代C++提供的智能指针,正是用于实现RAII手法。智能指针是存储指向动态分配对象指针的类,用于生命期控制,能够确保智能指针离开作用域时,自动正确地销毁动态分配地对象,防止内存泄漏。正确地使用智能指针后,理论上程序中应该不会再出现delete,也不用担心内存泄漏问题了。

未完待续...

C++ RAII特性

标签:实现   ...   构造函数   运行   let   解决   析构   不用   处理   

原文地址:https://www.cnblogs.com/japelly/p/9969700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!