我提出了强指针(Strong Pointer)和弱指针(Weak Pointer)。一个Strong Pointer会在许多地方和我们这个SmartPointer相似--它在超出它的作用域后会清除他所指向的对象。资源传递会以强指针赋值的形式进行。也可以有Weak Pointer存在,它们用来访问对象而不需要所有对象--比如可赋值的引用。 任何指针都必须声明为Strong...
weak_unregister_no_lock(&oldTable->weak_table, oldObj, location);// 删掉旧引用,因为location要指向newObj,其实应该先判断oldObj != newObj的 } if(newObj) { newObj = weak_register_no_lock(&newTable->weak_table, newObj,location);// 添加新引用 } *location = newObj; returnnewObj; } 1 2 3...
*/ static void weak_entry_insert(weak_table_t *weak_table, weak_entry_t *new_entry) { weak_entry_t *weak_entries = weak_table->weak_entries; ASSERT(weak_entries != nil); size_t begin = hash_pointer(new_entry->referent) & (weak_table->mask); size_t index = begin; size_t ...
weak_ptr weak_ptr是一种用于解决shared_ptr相互引用时产生死锁问题的智能指针。如果有两个shared_ptr相互引用,那么这两个shared_ptr指针的引用计数永远不会下降为0,资源永远不会释放。weak_ptr是对对象的一种弱引用,它不会增加对象的use_count。weak_ptr指针通常不单独使用,只能和 shared_ptr 类型指针搭配使用,可...
const_pointer_cast() dynamic_pointer_cast() static_pointer_cast() reinterpret_pointer_cast() (C++17标准引入) 如图所示,指针p1、p2指向同一块内存地址。 5.weak_ptr智能指针 常用的成员函数: reset():重置智能指针,使它所持有的资源为空。 swap():交换两个智能指针所管理的资源。
本文不看其他,只专注于weak的内部结构实现细节和源码解读,看了网上很多的文章都是贴上一篇open source里面的代码,并没有对实现细节进行解释。所以在这篇文章中,主要分为 weak_entry_t、weak_table_t的源码解析,weak_entry_t和weak_table_t的相互关系,以及对应的操作函数。
std::weak_ptr<int>weak1=sptr; // deletes managed object, acquires new pointer sptr.reset(newint); *sptr=5; // get pointer to new data without taking ownership std::weak_ptr<int>weak2=sptr; // weak1 is expired! if(autotmp=weak1.lock()) ...
weak_ptr<ClassA> wpA2 = spA; 1. 2. 3. expired函数 weak_ptr并不增加shared_ptr的引用计数,因此有可能发生对象已经析构但是weak_ptr还在的情况,此时使用weak_ptr就必须小心,当对象即将发生析构或者已经析构,expired返回true,expired函数效率比use_count高,该函数返回true时其结果才有意义,因为返回false时,此...
指针就是个地址,搞清楚这个地址指向哪,什么时候有效,什么时候无效,基本就能避免大多数问题了。 大家好,我是小康,一个在 C++ 的坑里摸爬滚打了 8 年的开发者。今天我要和大家聊聊那些让每个程序员都头疼的指针错误。 写了这么久C++,指针还是经常让你头大?代码莫名其妙崩溃,调试半天发现是指针出问题?面试官...
1. pointer 指针 2. argument 参数 3. array 数组 4. declaration 声明 5. represent 表示 6. manipulate 处理 结构体、共用体、链表: 1 structure 结构 2 member成员 3 tag 标记 4 function 函数 5 enumerate 枚举 6 union 联合(共用体) 7 create 创建 ...