std::unique_ptr是一种独占所有权的智能指针。它确保一个对象只能被一个unique_ptr所拥有,这意味着不能复制unique_ptr,只能移动它。 主要特性 独占所有权: 一个unique_ptr不能被复制,只能被移动。 自动释放: 当unique_ptr离开作用域时,它所管理的对象会被自动删除。 零开销: 在大多数操作中,unique_ptr与原始...
std::make_unique 是 C++11 标准库中的一个实用函数,它是 C++14 标准中引入的,用于创建一个 std::unique_ptr 智能指针,并将其指向一个新分配的对象。使用 std::make_unique 比直接使用 new 表达式更为安全,因为它可以防止资源泄漏,并提供异常安全保证。 std::unique_ptr 是一个模板类,它提供了对动态分配对...
std::unique_ptr<int>ptr(newint(10));int*raw_ptr=ptr.release();// 释放所有权,返回原始指针deleteraw_ptr;// 手动删除对象以避免内存泄漏 重置和重新分配 可以使用reset方法重置std::unique_ptr,释放当前对象并管理新的对象: std::unique_ptr<int>ptr(newint(10));ptr.reset(newint(20));// 重置并...
// 1.创建一个指向整型对象的unique_ptr,默认使用delete运算符释放资源 std::unique_ptr<int> uptr(new int(10)); // 2.C++ 14 使用 std::make_unique std::unique_ptr<int> uptr = std::make_unique<int>(10); std::unique_ptr<MyClass> uptr = std::make_unique<MyClass>(); // 3.转移所...
自动释放资源:std::unique_ptr使用RAII(资源获取即初始化)原则,确保在不再需要时自动释放所管理的对象,避免内存泄漏。 独占所有权:std::unique_ptr是独占所有权的智能指针,确保同一时间只有一个std::unique_ptr可以管理某个对象,避免资源的多重释放或访问冲突。
std::unique_ptr是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于std::shared_ptr允许多个shared_ptr引用同一个裸指针,它没有引用计数,它的性能比shared_ptr会高一点。 在用法上std::unique_ptr和std::shared_ptr是类似的,主要的不同是std::unique_ptr之间的赋值需要通过std::move实现。
std::unique_ptr是C++11中引入的智能指针,用于管理动态分配的对象。它通过使用自定义删除器(custom deleter)来实现资源的自动释放,包括内存的释放。 自定义删除器是一个可调用对象,它定义了在unique_ptr对象销毁时如何释放所管理的资源。通过自定义删除器,我们可以实现对资源的特定释放操作,从而节省内存或执行...
创建一个std::unique_ptr,并指定一个自定义的删除器customDeleter,用于释放资源。 void customDeleter(int* ptr) { std::cout << "Deleting memory at address: " << ptr << std::endl; delete ptr; } int main() { std::unique_ptr<int, decltype(&customDeleter)> ptr(new int(42), customDeleter...
STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr 和std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式来管理对象资源,并且在 unique_ptr 的生命期结束后释放该资源。
std::unique_ptr 初始化 1. std::unique_ptr的基本概念 std::unique_ptr 是C++11 引入的一种智能指针,它实现了独占所有权的语义,即同一时间内只能有一个 std::unique_ptr 指向某个对象。当 std::unique_ptr 被销毁时,它所管理的对象也会被自动删除(如果对象是通过 new 分配的)。这种特性使得 std::unique...