- 常见的资源包括:内存,文件描述符,互斥锁,数据库连接,图形界面中的字型和和笔刷,以及网络socket
- 获得资源后立刻放进管理对象 (RAII resource acquisition is initialization,资源取得时机便是初始化时机)
- 管理对象运用析构函数确保资源被释放
- 为防止资源泄漏,请使用RALL对象,它们在构造函数中获得资源并在析构函数中释放资源
- 常用的如shared_ptr unique_ptr
- shared_ptr unique_ptr两者都在其析构函数中调用delete而不是delete[],这意味着在动态分配的数组身上使用shared_ptr 是个馊主意。
- 复制RALL对象必须一并复制它所管理的资源,所以资源的copying行为决定RALL对象的copying行为。
- 常见的RALL class copying行为是:抑制copying,施行引用计数等。
- 对原始资源的访问可能经由显式转换或者隐式转化,一般而言,显式转换比较安全,隐式转换对客户比较方便
-
成对使用new 和 delete时要采用相同形式
-
以独立语句将newd对象置入智能指针
- 因为编译器的调用动作特性,一旦异常被抛出,有可能导致难以察觉的资源泄漏
- 编译器的调用特殊顺序可能导致潜在的资源泄漏。
posted @
2023-03-13 10:32
stu--wy
阅读(
46)
评论()
收藏
举报