void reset(); 备注成员函数释放资源指向由 *this 并将 *this 为空weak_ptr对象。示例复制 // std_tr1__memory__weak_ptr_reset.cpp // compile with: /EHsc #include <memory> #include <iostream> int main() { std::shared_ptr<int> sp(new int(5)); std::weak_ptr<int> wp(sp); std::...
av_log_set_callback(av_log_default_callback); g_pQSVLog.reset(); } } 开发者ID:ming-hai,项目名称:NVEnc,代码行数:7,代码来源:rgy_avlog.cpp voidSetParent(std::shared_ptr<Node> node){ parent_.reset(); parent_ = node; } 开发者ID:BartVandewoestyne,项目名称:Cpp,代码行数:5, 本文中...
这时候可以同weak_ptr来解决,它指向智能指针sp,但是并不持有引用计数,即sp的use_count()不会增加。 weak_ptr用法 接续前面的代码,weak_ptr的 lock, expired, use_count 三个函数了解它 weak_ptr调试的代码 std::weak_ptr<A> gw; void TestWeakPtr(){ gw.lock(); std::this_thread::sleep_for(std::c...
甚至于,我们可以将 weak_ptr 类型指针视为 shared_ptr 指针的一种辅助工具,借助 weak_ptr 类型指针, 我们可以获取 shared_ptr 指针的一些状态信息,比如有多少指向相同的 shared_ptr 指针、shared_ptr 指针指向的堆内存是否已经被释放等等。当 weak_ptr 类型指针的指向和某一 shared_ptr 指针相同时,weak_ptr 指针...
(2)shared_ptr<int> sp2(wp); //如果wp失效,则抛std::bad_weak_ptr异常。 3. lock():获取所监视资源的shared_ptr,如shared_ptr<int> sp = wp.lock(); //wp为weak_ptr类型。 4. reset():重置weak_ptr,影响弱引用计数。 (三)注意事项
operator*:解引用操作符,用于获取 shared_ptr 所指向对象的引用。 operator->:箭头操作符,用于通过 shared_ptr 访问对象的成员函数或成员变量。 get:返回指向所管理对象的裸指针。 reset:重置 shared_ptr,释放当前所管理的对象并接管新的对象。 release:释放对所管理对象的控制权,并返回该指针的裸指针。
weak_ptr本身也是一个模板类,但是不能直接用它来定义一个智能指针的对象,只能配合shared_ptr来使用,可以将shared_ptr的对象赋值给weak_ptr,并且这样并不会改变引用计数的值。查看weak_ptr的代码时发现,它主要有lock、swap、reset、expired、operator=、use_count几个函数,与shared_ptr相比多了lock、expired函数,但是...
shared_ptr<int> sp2 = sp1;// 复制,sp2也指向p shared_ptr<int> sp3 = make_shared<int>(2);// 通过make_shared构造,make_shared内部调用了new int(2); sp3.reset(new int(3));// 通过reset重置内部数据指针 sp3.reset();// 通过reset重置内部数据指针为空 ...
void reset() noexcept; (C++11 起) 释放被管理对象的所有权。调用后 *this 不管理对象。 参数(无) 返回值(无) 示例运行此代码 #include <iostream> #include <memory> int main() { auto shared = std::make_shared<int>(), shared2 = shared, shared3 = shared2; auto weak = std::weak_ptr<...
3. lock():获取所监视资源的shared_ptr,如shared_ptr<int> sp = wp.lock(); //wp为weak_ptr类型。 4. reset():重置weak_ptr,影响弱引用计数。 (三)注意事项 1. weak_ptr不是独立的智能指针,它是shared_ptr的助手,只是监视shared_ptr管理的资源是否释放,不会影响强引用计数,不能管理资源。