process(shared_ptr<int>(p.get()));//有问题 p.get()返回 p 所管理的动态内存的内置指针,使用该指针初始化一个临时的shared_ptr,离开process后动态内存会被释放,后面对 p 的使用存在危险。 auto sp = make_shared<int>(); auto p= sp.get();deletep; sp 管理一块动态内存,p 通过sp.get()获得这...
shared_ptr 有一个 get 方法,用于获取它所指向的指针。还有一个 data 方法,用于获取指针所指向的对象的值。 1. get 方法 get 方法返回一个指向底层对象的指针。这个指针的类型与 shared_ptr 的类型相同,但是它不具有引用计数功能。这意味着,如果对 get 方法返回的指针进行复制或赋值操作,不会影响 shared_ptr ...
std::shared_ptr<Base> a = b->sget();return0; } enable_shared_from_this能让其一个对象(假设其名为t,且已被一个std::shared_ptr对象pt管理)安全地生成其他额外的std::shared_ptr实例(假设名为pt1, pt2, ...) ,它们与pt共享对象t的所有权。 4. shared_ptr 包装数组 shared_ptr 不能直接包装...
// 智能指针初始化 std::shared_ptr<int> p1(A);//A use_count=1 std::shared_ptr<int> p2 = p1;//A use_count=2 std::shared_ptr<int> p3;//use_count=0 p3.reset(A);//A use_count=1 // 智能指针有值时reset std::shared_ptr<int> p1(A);//A use_count=1 std::shared_ptr<in...
get函数是C++中shared_ptr中提供的一个方法,可以通过它获取智能指针所指向的对象,它返回一个指向投射对象的原生指针。 可以使用get函数获取shared_ptr指向的资源,而不必担心资源的回收。用这个函数可以轻松访问智能指针指向的对象,而不用关心这个智能指针的生命周期。 使用get函数前,需要先判断智能指针指向的资源是否已经...
1.get() 这个方法用来返回shared_ptr中保存的指针。小心使用,如果只能指针释放了对象,那么这个指针也就成为野指针。同时也要小心自己对该指针做的任何操作。(不过笔者认为既然有shred_ptr了就不要再用裸指针了吧。 2.use_count() 这个方法用来返回与某个shared_ptr共享对象的shared_ptr数量。
1. reset(),参数为空时,会释放shared_ptr所拥有的对象,释放后执行get()会返回false 2. reset(xx),参数不为空时会先释放原来拥有的对象,再获取新对象的所有权 3. get() 判断shared_ptr当前是否拥有对象 实验如下图 代码如下 #include <iostream>
二、shared_ptr类的操作 shared_ptr类的默认初始化: 如果不初始化一个shared_ptr类对象,那么该对象默认初始化为一个空指针 三、make_shared函数 最安全的分配和使用动态内存的方法就是调用该函数 此函数在内存中动态分配对象并初始化,返回此对象的shared_ptr ...
shared_ptr的关键方法包括get()、use_count()、unique()、reset()和swap(ptr)等。注意事项尽管shared_ptr提供get()获取指针,但需谨慎使用,避免野指针。直接用指针构造shared_ptr可能导致资源重复删除,不建议。weak_ptr相比之下,weak_ptr更加简单,它不直接控制对象,仅作为shared_ptr的弱引用。使用...
构造空指针:可以创建一个不指向任何对象的shared_ptr。明确指向:可以直接用原始指针来构造shared_ptr。使用make_shared函数:推荐使用make_shared函数来创建shared_ptr,因为它更高效,能够一次性分配控制块和对象内存。成员方法:get:获取底层原始指针。reset:重置shared_ptr,使其指向新的对象或变为空...