std::unique_ptr自定义删除器通过可调用对象替换默认delete行为,支持函数指针、lambda、函数对象三种方式,需在模板参数中显式声明类型。
默认情况下,std::unique_ptr 使用 delete(对单个对象)或 delete[](对数组)释放资源。但很多场景下需要更精细的控制:比如关闭文件句柄、释放非堆内存、调用 C API 的清理函数、或配合特定内存池。这时就要通过自定义删除器(deleter)来替换默认行为。
删除器本质是一个可调用对象(函数对象、lambda、函数指针),类型需在 unique_ptr 模板参数中显式声明,否则编译失败:
void close_file(FILE* f) { if (f) fclose(f); }
std::unique_ptr fp(fopen("log.txt", "w"), close_file); auto deleter = [](int* p) { std::cout << "freeing: " << *p << "\n"; delete p; };
std::unique_ptr ptr(new int(42), deleter); struct CustomDeleter { void operator()(MyResource* r) const { r->cleanup(); delete r; } };
std::unique
_ptr res(new MyResource(), CustomDeleter{}); 删除器类型影响 unique_ptr 对象大小:无状态删除器(如函数指针、空 lambda、无成员的 struct)通常不增加体积;有状态删除器(如含成员变量的仿函数)会让 unique_ptr 占用额外空间。若对内存敏感,优先选无状态方案。另外,删除器调用是 inline 友好的,现代编译器基本能完全内联,性能开销可忽略。
不要直接用 std::unique_ptr 配合普通 delete —— 它默认调用 delete[],但若资源不是 new[] 分配的(如 malloc 或 mmap),必须自定义。例如管理 malloc 分配的内存:
auto free_deleter = [](void* p) { free(p); };
std::unique_ptr buf(static_cast(malloc(1024)), free_deleter); 注意:此时不能使用 operator[] 的安全索引(因为类型是 char* 而非 char[]),但可通过 .get() 获取裸指针安全访问。
# c++
# if
# fopen
# fclose
# auto
# int
# void
# Lambda
# 指针
# 堆
# delete
# 对象
# 自定义
# 三种
# 是一个
# 句柄
# 会让
# 而非
# 可通过
# 为空
# 复用
# 情况下
相关文章:
威客平台建站流程解析:高效搭建教程与设计优化方案
桂林网站制作公司有哪些,桂林马拉松怎么报名?
制作网站的模板软件,网站怎么建设?
如何快速上传自定义模板至建站之星?
购物网站制作公司有哪些,哪个购物网站比较好?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
创业网站制作流程,创业网站可靠吗?
移民网站制作流程,怎么看加拿大移民官网?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星如何优化SEO以实现高效排名?
常州自助建站工具推荐:低成本搭建与模板选择技巧
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何在景安云服务器上绑定域名并配置虚拟主机?
制作网站公司那家好,网络公司是做什么的?
黑客入侵网站服务器的常见手法有哪些?
如何配置IIS站点权限与局域网访问?
如何通过万网虚拟主机快速搭建网站?
建站之星如何实现网站加密操作?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
婚礼视频制作网站,学习*后期制作的网站有哪些?
如何在景安服务器上快速搭建个人网站?
,怎么在广州志愿者网站注册?
如何选择靠谱的建站公司加盟品牌?
定制建站是什么?如何实现个性化需求?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
香港服务器如何优化才能显著提升网站加载速度?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
高防服务器租用如何选择配置与防御等级?
网站制作话术技巧,网站推广做的好怎么话术?
如何在万网主机上快速搭建网站?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
建站主机选购指南:核心配置优化与品牌推荐方案
如何解决ASP生成WAP建站中文乱码问题?
如何在七牛云存储上搭建网站并设置自定义域名?
重庆市网站制作公司,重庆招聘网站哪个好?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何通过建站之星自助学习解决操作问题?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何撰写建站申请书?关键要点有哪些?
如何通过多用户协作模板快速搭建高效企业网站?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
建站之星与建站宝盒如何选择最佳方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。