一、获取原始指针 #include"stdafx.h"#include<iostream>#include<windows.h>#include<memory>usingnamespacestd;int_tmain(intargc, _TCHAR*argv[]) {intlen =128; shared_ptr<char> ptr(newchar[len]);//得到指针的原始地址char* addr = ptr.get(); memset(addr,0, len); strcpy_s(addr, len,"fas...
这个函数返回一个指向共享对象的原始指针,即ptr。 示例代码: 代码语言:c++ 复制 #include<iostream> #include<memory> int main() { std::shared_ptr<int> shared_ptr = std::make_shared<int>(42); int* ptr = shared_ptr.get(); std::cout << "The value of the shared_ptr is: " << *ptr<...
将原始指针指向shared_ptr的过程可以通过shared_ptr的构造函数来实现。具体步骤如下: 首先,需要包含头文件<memory>,该头文件中定义了智能指针相关的类和函数。 创建一个shared_ptr对象,并将原始指针作为参数传递给构造函数。例如:std::shared_ptr<T> ptr(new T);,其中T是指针指向的类型。 现在,原始指针已经被转...
//初始化智能指针,并自定义释放规则 std::shared_ptr<int> p7(new int[10], deleteInt); 四shared_ptr常用函数 get()函数,表示返回当前存储的指针(就是被shared_ptr所管理的指针) 。 但是不建议使用get()函数获取 shared_ptr 关联的原始指针,因为如果在 shared_ptr 析构之前手动调用了delete函数,会导致错误...
T &operator*()const;// 操作符重载T &operator->()const;// 操作符重载T *get()const;// 获得原始指针boolunique()const;// 是否唯一longuse_count()const;// 引用计数explicitoperatorbool()const;// 显式bool型转换voidswap(shared_ptr & b);// 交换指针}; ...
如果智能指针被初始化了一块有效内存,那么这块内存的引用计数 + 1,如果智能指针没有被初始化或者被初始化为 nullptr 空指针,引用计数不会 + 1。另外,不要使用一个原始指针初始化多个 shared_ptr。 (2)通过拷贝和移动构造函数初始化 #include"stdafx.h"#include<iostream>#include<windows.h>#include<memory>usin...
使用get方法可以取出智能指针中的原始指针: 但取出的原始指针,可能被释放,因此使用这个指针是不安全的,如在不同线程中,应该对该指针做加锁保护,或者以weak_ptr取代原始...
sp.reset (new int); // 之前的指针的引用计数减1,并获取当前指针的所有权 *sp=20; std::cout << *sp << '\n'; sp.reset(); //引用计数减1,释放内存 1. 2. 3. 4. 5. 6. 7. 8. 3、get:获取原始指针 // shared_ptr::get example ...
1 shared_ptr指针初始化 1.1 通过一个已存在的普通指针进行初始化 此种方法不建议,因为如果原始指针指向的空间被释放掉的话,同时会引起指针指针的异常 1.2 通过...