[C++]12章 动态内存和智能指针
?shared_ptr p.get(); 返回p中保存的指针,返回的是一个内置指针,指向智能指针所管理的对象。适用于:我们需要向不能使用智能指针的代码传递一个内置指针。使用get返回的指针的代码不能delete此指针。不要使用get初始化另一个智能指针或者为另一个智能指针赋值。 p.use_count();返回与p共享对象的智能指针数量。 new:分配内存。 int* pi=new int; //pi指向一个动态分配的、未初始化的无名对象; shared_ptr shared_ptr shared_ptr shared_ptr p.reset(); p.reset(q); p.reset(q,d); 若p是唯一指向其对象的shared_ptr,reset会释放此对象。若传递了可选的参数内置指针q,会令p指向q,否则会将p置空。若还传递了参数d,将会调用d而不是delete来释放q。 重要:1.不要混用普通指针和智能纸指针。 2.不要使用get初始化另一个智能指针,或者为另一个智能指针赋值。 3.不使用相同的内置指针初始化或者reset多个智能指针。 4.不delete get()返回的指针。 5.不使用get()初始化或reset另一个智能指针。 6.如果你使用get()返回的指针,记住当最后一个对应的智能指针销毁后,你的指针就变为无效了。 7.如果你使用智能指针管理的资源不是new分配的内存,记住传递给它一个删除器。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |