1. 基本用法 创建和使用 std::shared_ptr #include <iostream> #include <memory> // 需要包含此头文件 #include <vector> void example() { // 创建一个 std::shared_ptr 管理动态分配的 int 对象 std::shared_ptr<int> ptr1 = std::make_sha
std::weak_ptr的lock()方法会尝试返回一个有效的std::shared_ptr,如果对象已经被释放,则返回空的std::shared_ptr,这样可以安全地检查对象是否有效。 5.std::shared_ptr的线程安全性 std::shared_ptr提供了基本的线程安全性,保证了引用计数的线程安全更新。这意味着多个线程可以安全地同时持有和复制同一个std::s...
std::shared_ptr<std::string>ptr=std::make_shared<std::string>("Hello, World!");std::cout<<ptr->size()<<std::endl;// 输出:13 1. 2. 3.3 容器中的使用 共享指针可以存储在容器中。 std::vector<std::shared_ptr<std::string>>vec;vec.push_back(std::make_shared<std::string>("Tom")...
#include <iostream>#include <memory> // 包含智能指针头文件 int main%28%29 { // 创建一个 shared_ptr,管理一个动态分配的整数 std::shared_ptr<int> ptr1 = std::make_shared<int>%2810%29; // 输出值和引用计数 std::cout << "值: " << %2Aptr1 << ", 引用计数: " << ptr1.use_...
std::make_shared的用法如下: 代码语言:txt 复制 std::shared_ptr<T> ptr = std::make_shared<T>(args); 其中,T是要分配内存的类型,args是传递给T构造函数的参数。通过这种方式分配的内存将由std::shared_ptr自动管理,无需手动释放。 std::make_shared的应用场景包括但不限于: ...
创建std::shared_ptr: 推荐使用std::make_shared<T>(args...)以提高效率。 直接使用new创建时,需要传递给std::shared_ptr<T>构造函数,如std::shared_ptr<int> p(new int(10));。 访问和修改对象: 使用*和->操作符访问所指向的对象,如*p1或p1->someMethod()。
在C++中,std::shared_ptr是一种智能指针,用于管理动态分配的内存。它允许多个shared_ptr共享同一块内存,避免了内存泄漏和悬空指针的问题。使用std::shared_ptr的...
当std::shared_ptr的引用计数降至零时,它所拥有的对象将自动被销毁。我们可以通过调用std::shared_ptr的reset方法来显式地放弃对某个对象的管理。一旦调用reset,该std::shared_ptr的引用计数将减少,从而可能导致对象的销毁(如果该对象没有其他std::shared_ptr在管理它的话)。◆ 高级用法 ◆ 自定义删除器 st...
基本用法 //1 创建 int main() { // 创建一个 shared_ptr 并指向新建的 MyClass 对象 std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>(42); // 访问对象的方法 std::cout << "Value: " << ptr1->GetValue() << std::endl; ...