process(shared_ptr<int>(p));//正确,创建 p 的临时拷贝,p 中的引用计数会增加。process(shared_ptr<int>(p.get()));//有问题 p.get()返回 p 所管理的动态内存的内置指针,使用该指针初始化一个临时的shared_ptr,离开process后动态内存会被释放,后面对 p 的使用存在危险。 auto sp = make_shared<int...
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()获得这...
(2);//方式4//使用方法例子:可以当作一个指针使用std::cout << *p4 << std::endl;//std::shared_ptr<int> p4 = new int(1);if(p1) {//重载了bool操作符std::cout <<"p is not null"<< std::endl; }int* p = p1.get();//获取原始指针std::cout << *p << std::endl; } 指定删...
1. reset(),参数为空时,会释放shared_ptr所拥有的对象,释放后执行get()会返回false 2. reset(xx),参数不为空时会先释放原来拥有的对象,再获取新对象的所有权 3. get() 判断shared_ptr当前是否拥有对象 实验如下图 代码如下 #include <iostream>
get函数是C++中shared_ptr中提供的一个方法,可以通过它获取智能指针所指向的对象,它返回一个指向投射对象的原生指针。 可以使用get函数获取shared_ptr指向的资源,而不必担心资源的回收。用这个函数可以轻松访问智能指针指向的对象,而不用关心这个智能指针的生命周期。 使用get函数前,需要先判断智能指针指向的资源是否已经...
shared_ptr 有一个 get 方法,用于获取它所指向的指针。还有一个 data 方法,用于获取指针所指向的对象的值。 1. get 方法 get 方法返回一个指向底层对象的指针。这个指针的类型与 shared_ptr 的类型相同,但是它不具有引用计数功能。这意味着,如果对 get 方法返回的指针进行复制或赋值操作,不会影响 shared_ptr ...
int*q=p.get();//正确:使用q需要注意,不要让它管理的指针被释放 {//新语句块 shared_ptr<int>(q);//用q初始化一个智能指针对象 }//语句块结束之后,智能指针对象释放它所指的内存空间 intfoo=*p;//错误的,p所指的内存已经被释放了 1. 2. ...
<iostream> int main() { std::shared_ptr<int> sp0; std::shared_ptr<int> sp1(new int(5)); std::cout << "sp0.get() == 0 == " << std::boolalpha << (sp0.get() == 0) << std::endl; std::cout << "*sp1.get() == " << *sp1.get() << std::endl; return (0);...
示例4: GetMainThreadId ▲點讚 1▼ DWORDGetMainThreadId(void){conststd::tr1::shared_ptr<void> hThreadSnapshot(CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0), CloseHandle);if(hThreadSnapshot.get() == INVALID_HANDLE_VALUE) { add_log("GetMainThreadId failed");return0; ...