首先,需要定义一个自定义的删除器函数,用于释放C指针所指向的内存。删除器函数的原型应与unique_ptr的删除器要求相匹配,即接受一个指针参数并返回void。例如: 代码语言:txt 复制 void customDeleter(int* ptr) { // 释放C指针所指向的内存 delete ptr; } ...
支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建,却在另一个 DLL 内被 delete 销毁)、自动解除互斥锁 weak_ptr weak_ptr 允许你共享但不拥有某对象,一旦最末一个拥有该对象的智能指针失去了所有权,任何 weak_ptr 都会自动成空(empty)。因此,在 default 和 cop...
支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建,却在另一个 DLL 内被 delete 销毁)、自动解除互斥锁weak_ptrweak_ptr 允许你共享但不拥有某对象,一旦最末一个拥有该对象的智能指针失去了所有权,任何 weak_ptr 都会自动成空(empty)。因此,在 default 和 copy ...
指针 指向常量的指针(pointer to const)自身是常量的指针(常量指针,const pointer)引用 指向常量的...
支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建,却在另一个 DLL 内被 delete 销毁)、自动解除互斥锁 weak_ptr weak_ptr 允许你共享但不拥有某对象,一旦最末一个拥有该对象的智能指针失去了所有权,任何 weak_ptr 都会自动成空(empty)。因此,在 default 和 cop...
shared_ptr多个智能指针可以共享同一个对象,对象的最末一个拥有着有责任销毁对象,并清理与该对象相关的所有资源。支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建,却在另一个 DLL 内被 delete 销毁)、自动解除互斥锁...
shared_ptr多个智能指针可以共享同一个对象,对象的最末一个拥有着有责任销毁对象,并清理与该对象相关的所有资源。支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建,却在另一个 DLL 内被 delete 销毁)、自动解除互斥锁...
shared_ptr 多个智能指针可以共享同一个对象,对象的最末一个拥有着有责任销毁对象,并清理与该对象相关的所有资源。 支持定制型删除器(custom deleter),可防范 Cross-DLL 问题(对象在动态链接库(DLL)中被 new 创建,却在另一个 DLL 内被 delete 销毁)、自动解除互斥锁 ...
以unique_ptr为例,我们可以创建一个自定义的删除器,该删除器在智能指针超出范围时自动调用相应的释放函数。下面是一个简单的例子: // 定义一个自定义的删除器 auto deleter = [](AVFrame* frame) { av_frame_free(&frame); }; // 使用unique_ptr和自定义删除器创建智能指针 std::unique_ptr<AVFrame, de...
std::make_unique, std::make_unique_for_overwrite std::hash <std::unique_ptr> std::unique_ptr<T,Deleter>::operator<< std::swap(std::unique_ptr) std::unique_ptr<T,Deleter>::operator* std::unique_ptr<T,Deleter>::operator[] operator==,!=,<,<=,>,>=,<=>(std::unique_ptr) std...