基本概念 主要功能 常见用法 创建std::weak_ptr 防止循环引用 总结 std::weak_ptr 是C++11 标准中引入的一个智能指针,用于解决 std::shared_ptr 中可能出现的循环引用问题。它提供了一种机制来观察但不控制共享资源的生命周期,避免了由于引用计数未能减少到零而导致的内存泄漏。 基本概念 std::shared_ptr
std::weak_ptr是一种特殊类型的智能指针,它不会影响其指向的对象的生命周期,即它不会增加该对象的引用计数。std::weak_ptr通常用于解决std::shared_ptr的循环引用问题。 std::shared_ptr<int> ptr1(new int(5));std::weak_ptr<int> weakPtr = ptr1; // weakPtr points to ptr1's object but does ...
std::weak_ptr 是用来监视 std::shared_ptr 的,通过 weak_ptr 就可以得知它监视的 shared_ptr 是否已经销毁了。 在code2 目录下新建一个 code6.cpp 文件: #include<iostream>#include<memory>std::weak_ptr<int> gw;voidf(){if(autospt = gw.lock()) {// 使用之前必须复制到 shared_ptrstd::cout ...
你所需要的是一个原子操作来检查std::weak_ptr是否过期,如果没过期则提供对所指对象的访问。可以通过从std::weak_ptr构造std::shared_ptr来实现上述操作。这个操作有两个形式,取决于假如你从std::weak_ptr来构造std::shared_ptr时std::weak_ptr已经失效你期望发生什么情况。一种形式是std::weak_ptr::lock,它...
std::weak_ptr用法 一、特性 std::weak_ptr并不是一种独立的智能指针,而是std::shared_ptr的一种扩充。 std::weak_ptr一般是由std::shared_ptr创建的,之后两者就指涉到相同的控制块,但std::weak_ptr并不会影响所指涉对象的引用计数。 二、使用场景...
std::unique_ptr 是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于 std::shared_ptr 允许多个 shared_ptr 引用同一个裸指针,它没有引用计数,它的性能比 shared_ptr 会高一点。
下边是一个 shared_ptr 的用法例子: 1. #include <iostream> 2. #include <memory> 3. 4. class Woman; 5. class Man{ 6. private: 7. std::weak_ptr<Woman> _wife; 8. //std::shared_ptr<Woman> _wife; 9. public: 10. void setWife(std::shared_ptr<Woman> woman){ 11. _wife = ...
这样当最后一个引用它的对象被释放的时候,资源的引用计数减少到0,此时释放该资源。下边是一个shared_ptr的用法例子: #include <iostream> #include <memory> class Woman; class Man{ private: std::weak_ptr<Woman> _wife; //std::shared_ptr<Woman> _wife;...
C/C++ C++ 11 std::function和std::bind用法 2019-12-19 13:39 −std::bind() std::bind 主要用于绑定生成目标函数,一般用于生成的回调函数,cocos的回退函数都是通过std::bind和std::function实现的。两个点要明白:1.绑定全局或者静态函数比绑定成员函数少... ...