RAW_PTR_EXCLUSION base::span<SomeClass> ignored_span_field; };
线程通用接口,跨平台封装,会创建并持有RunLoop对象 // base/threading/thread.hraw_ptr<RunLoop> run_loop_ =nullptr; // 这种写法可以抽离真正的消息循环逻辑到RunLoop中,并且保证这部分逻辑会随着线程主函数结束后销毁RunLoop run_loop; run_loop_ = &run_loop;Run(run_loop_); ThreadMain作为线程入口,创建Run...
Foo*raw_ptr=foo_ptr.get(); // We can call through the smart pointer as if it were a pointer. DictionaryValue*dict=NULL; if(!value->GetAsDictionary(&dict)) returnfalse; 当scoped_ptr 作为函数参数使用时,这意味着函数的代码会获得参数对象的所有权,函数的调用者如果不是使用一个临时的 scoped_...
raw_ptr_hookable_impl.h:85:9 #3 0x55dc535142a9 in base::raw_ptr<BubbleContentsWrapper, (partition_alloc::internal::RawPtrTraits)0>::GetForDereference() const base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr.h:833:12 #4 0x55dc53513964 in base::raw_ptr<Bubble...
(net::RequestPriority priority, int intra_priority_value) override; raw_ptr<mojom::URLLoaderFactory> network_loader_factory_; raw_ptr<URLLoaderFactory> sync_network_loader_factory_; mojo::Remote<mojom::URLLoader> network_loader_; ResourceRequest request_; GURL last_response_url_; net::Redirect...
使用raw pointer 或者 WeakPtr。如果其它代码拥有对象,但是你需要知道这个对象是否已经被销毁,就使用 WeakPtr,当所关联的对象被销毁的时候 WeakPtr 会自动被置空。你可以通过 WeakPtr.get 方法获得关联对象的指针,如果返回值为空则说明对象已经被销毁。
// 我们可以用 () 检查std::unique_ptr<>是否为空 if (!value) return false; // get() 访问持有的裸指针 Foo* raw_ptr = foo_ptr.get(); // 我们可以像使用裸指针一样调用std::unique_ptr<>的方法 DictionaryValue* dict; if (!value->GetAsDictionary(&dict)) ...
raw_ptr<Listener>listener_;std::unique_ptr<internal::MessagePipeReader>message_reader_;...};Chann...
#2 0x5561ef31666f in BubbleContentsWrapper* base::internal::RawPtrHookableImpl<true>::SafelyUnwrapPtrForDereference<BubbleContentsWrapper>(BubbleContentsWrapper*) base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_hookable_impl.h:85:9 ...
scoped_ptr_impl定义了内部类Data来继承Deleter,实际就是增加了ptr来保存传入的裸指针(raw pointer / bare pointer)。 struct Data : public D { explicit Data(T* ptr_in) : ptr(ptr_in) {} Data(T* ptr_in, const D& other) : D(other), ptr(ptr_in) {} ...