std::unique_ptr是一种独占所有权的智能指针。它确保一个对象只能被一个unique_ptr所拥有,这意味着不能复制unique_ptr,只能移动它。 主要特性 独占所有权: 一个unique_ptr不能被复制,只能被移动。 自动释放: 当unique_ptr离开作用域时,它所管理的对象会被自动删除。 零开销: 在大多数操作中,unique_ptr与原始...
std::shared_ptr是一种支持共享所有权的智能指针。多个std::shared_ptr可以同时管理同一个对象,当最后一个std::shared_ptr被销毁时,资源才会被释放。 示例:用std::shared_ptr实现共享资源 #include<iostream> #include<memory> intmain%28%29{ //用shared_ptr创建一个共享的整数 std::shared_ptr<int>ptr1=s...
#include <iostream>#include <memory> int main%28%29 { std::unique_ptr<int> ptr1 = std::make_unique<int>%2842%29; // 创建智能指针 std::cout << "ptr1 指向的值: " << %2Aptr1 << std::endl; // 转移所有权 std::unique_ptr<int> ptr2 = std::move%28ptr1%29; if %28%21pt...
shared_ptr作为另一个常用的智能指针,它和unique_ptr智能指针的理念有着很大的不同,它提供了对资源共享管理,即对资源所有权的共享(shared ownership),这就要求shared_ptr必须是一个可复制的对象。但是由于shared_ptr对象有很多个,而具体的对象资源只有一个这就要求所有共享对象资源的shared_ptrs指针中最终只能有一...
std::unique_ptr<int> uptr(raw_ptr); // 如果uptr已有对象,先释放旧对象,再转移所有权 uptr.reset(raw_ptr); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 2. std::shared_ptr (C++11) 原理与特点: 实现共享所有权(shared ownership)的智能指针。多个shared_ptr实例可以同时指向并共享同...
本视频详细介绍了C++中的智能指针,包括std::unique_ptr、std::shared_ptr和std::weak_ptr。视频中解释了智能指针的基本概念、工作原理以及它们在内存管理中的应用,帮助开发者更好地理解和使用这些工具。, 视频播放量 380、弹幕量 2、点赞数 9、投硬币枚数 7、收藏人数 10
C++指针指针---share_ptr和weak_ptr 智能指针简介 为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer)。在现代 c + + 编程中,标准库包含智能指针,这些指针用于帮助确保程序不会出现内存和资源泄漏,并具有异常安全。C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr, std::weak_ptr,使用...
1.删除器是lambda表达式,将匿名函数具名,也可直接使用匿名函数 2.用std::make_shared<>()或std::make_unique<> 不得行,莫得这种操...
std::unique_ptr<int>sp=std::make_unique<int>(12345); 以上三种方式均可,其中,方法三是C++14新增的,通过std::make_unique方法来创建std::unique_ptr对象。 std::unique_ptr禁止复制语义 和std::shared_ptr区别:unique_ptr是移动构造(unique_ptr不可拷贝和赋值,但可以被移动,unique_ptr禁止复制语义,拷贝构造...
假如我们把std::shared_ptr和std::make_shared替换成std::unique_ptr 和std::make_unique,会发生相同的事情。使用std::make_unique来代替new在写异常安全的代码里是和使用std::make_shared一样重要。 另一个使用std::make_shared的优势(和直接使用new相比)是会提升性能。使用std::make_shared会让编译器产生更...