C语言资源管理操作方法有哪些具体细节和技巧?

2026-04-12 11:242阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1098个文字,预计阅读时间需要5分钟。

C语言资源管理操作方法有哪些具体细节和技巧?

目录+对象资源管理+资源管理类中要小心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分钟。

C语言资源管理操作方法有哪些具体细节和技巧?

目录+对象资源管理+资源管理类中要小心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啥的就能代替咯。

阅读全文