首页 > 其他分享 ><三>自定义删除器

<三>自定义删除器

时间:2022-12-16 22:23:29浏览次数:39  
标签:std 自定义 删除 new include ptr

unique_ptr的成员函数在上一篇博客中几乎全部涵盖,其实还有一个很有踢掉,即std::unique_ptr::get_deleter字面已经很明显了,就获得deleter

智能指针采通过引用计数我们能解决多次释放同一块内存空间的问题,并且和之间直接移交管理权的方式比较这种方式更加灵活安全。
但是这种方式也只能处理new出来的空间因为new要和析构中的delete匹配,为了使能和new,malloc,fopen的管理空间匹配,我们需要定制删除器

通过自定义删除器,可以实现一些场景下的资源释放和删除.

代码1

#include <iostream>
#include <thread>
using namespace std;

template <typename T>
class MyArrayDeletor {
public:
	void operator()(T *p ){
		cout << "call MyArrayDeletor" << endl;
		delete[] p;
		p = nullptr;
	}
	
};


int main() {
	{
	  unique_ptr<int, MyArrayDeletor<int>> ptr(new int[100]);
	}

	system("pause");
	return 0;
}

代码2,删除器_文件

#include <iostream>
#include <thread>
using namespace std;

template <typename T>
class MyFileDeletor {
public:
	void operator()(T *p) const {
		cout << "call MyFileDeletor" << endl;
		fclose(p);
		p = nullptr;
	}

};

int main() {
	{
	  unique_ptr<FILE, MyFileDeletor<FILE>> ptr(fopen("2.txt","w"));
	}

	system("pause");
	return 0;
}

标签:std,自定义,删除,new,include,ptr
From: https://www.cnblogs.com/erichome/p/16944892.html

相关文章

  • 【SpringBoot】封装自定义的starter
    一、参考资料​​SpringBoot封装自己的Starter-码农教程​​​​[Gradle]发布构件到本地仓库​​​​Gradle插件之maven-publish:发布androidlibrary到maven仓库-知乎......
  • android自定义属性
    1、引言对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现:1.自定义一个CustomView(extendsView)类2.编写values/attrs.xml,在其中编写styleable和item等标签元素3.......
  • android自定义listview实现header悬浮框效果
    之前在使用iOS时,看到过一种分组的View,每一组都有一个Header,在上下滑动的时候,会有一个悬浮的Header,这种体验觉得很不错,请看下图:上图中标红的1,2,3,4四张图中,当向上滑动时,仔细......
  • linux 中批量删除包含指定字符的行
     001、[root@PC1test]#lsa.txt[root@PC1test]#cata.txt##测试数据7yy2gg4mm6kk5mm3aa9xx1uu8oo[root@PC1test]#cpa.txta.t......
  • vba自定义函数
    excel不是最新版的,没有textjoin函数,写两个用。函数一:pastestr():优点:简单,第二个参数可以省略;缺点:只能是一个连续区域,或小括号内的(多个不连续单一元格)。1Functionp......
  • 企业级自定义表单引擎解决方案(十八)--列表视图属性设置
    表格对于后台管理类的系统来说,至关重要,系统大多数功能都需要以表格的方式展示业务内容,系统开发人员多数时间也是围绕着表格进行业务编码,接触过很多后台管理系统的框架,我个......
  • 自研ORM框架 实现类似EF Core Include 拆分查询 支持自定义条件、排序、选择
    Baozi,I'mMr.ZhongIliketobrushTikTok,Iknowthatanchorsliketocallitthat,haha!Recently,Ihaven'tbeensobusy,andittookalmostadaytoaddso......
  • 写一个自定义的脚手架的前奏
    一直想写一个自己的脚手架,个人觉得脚手架核心就是输入命令行,然后各类的目录、文件、配置都给你自动生成好了,然后你直接开发业务就行,不需要进行过多的配置,总而言之,脚手架就......
  • 表的删除和复制
    1.表的删除droptable表名droptableifexistauthor;2.表的复制#1.复制表的结构creattable新表like要复制的表creattablecopylikeauthor;#2.复制表的结......
  • 如何删除数据并刷新列表
    在循环容器中使用数据中心和触发器实现删除某一条数据效果展示前置准备一个消息列表一个消息数据表具体步骤(3)添加一个图标创建消息查询与删除事件创建消息查询与删除触发器......