C语言资源管理操作方法有哪些具体细节和技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1098个文字,预计阅读时间需要5分钟。
目录+对象资源管理+资源管理类中要小心copy行为+在资源管理类中提供对原始资源的访问+在使用new和delete时采用相同格式+以独立语句将new对象置入智能指针+对象资源管理+class
目录
- 以对象管理资源
- 在资源管理类中小心copy行为
- 在资源管理类中提供对原始资源的访问
- 成对使用new和delete时要采用相同形式
- 以独立语句将new对象置入智能指针
以对象管理资源
class A{...}; //工厂函数createA来提供特定的A对象 A* createA(); //坏情况 void f(){ A* p=createA(); ... delete p;//如何在delete之前程序先return了,则无法delete } //为了确保资源释放 将资源放进对象内 利用对象的析构函数来释放 void f(){ std::shared_ptr<A> p(createA()); ... //程序结束后会经shared_ptr的析构函数释放 }
auto_ptr已经被废除,主要原因是其拷贝会造成所以权转移,所以使用shared_ptr更好
以对象管理资源的关键想法:
1、获得资源后立刻放进管理对象内
2、管理对象运用析构函数释放资源
注意是:shared_ptr和auto_ptr两者都在析构函数上使用delete而不是delete[],所以在动态分配的数组上使用它们不好。当然我觉得还是少用动态数组,用vector,string啥的就能代替咯。
本文共计1098个文字,预计阅读时间需要5分钟。
目录+对象资源管理+资源管理类中要小心copy行为+在资源管理类中提供对原始资源的访问+在使用new和delete时采用相同格式+以独立语句将new对象置入智能指针+对象资源管理+class
目录
- 以对象管理资源
- 在资源管理类中小心copy行为
- 在资源管理类中提供对原始资源的访问
- 成对使用new和delete时要采用相同形式
- 以独立语句将new对象置入智能指针
以对象管理资源
class A{...}; //工厂函数createA来提供特定的A对象 A* createA(); //坏情况 void f(){ A* p=createA(); ... delete p;//如何在delete之前程序先return了,则无法delete } //为了确保资源释放 将资源放进对象内 利用对象的析构函数来释放 void f(){ std::shared_ptr<A> p(createA()); ... //程序结束后会经shared_ptr的析构函数释放 }
auto_ptr已经被废除,主要原因是其拷贝会造成所以权转移,所以使用shared_ptr更好
以对象管理资源的关键想法:
1、获得资源后立刻放进管理对象内
2、管理对象运用析构函数释放资源
注意是:shared_ptr和auto_ptr两者都在析构函数上使用delete而不是delete[],所以在动态分配的数组上使用它们不好。当然我觉得还是少用动态数组,用vector,string啥的就能代替咯。

