1. 基本用法 创建和使用 std::shared_ptr #include <iostream> #include <memory> // 需要包含此头文件 #include <vector> void example() { // 创建一个 std::shared_ptr 管理动态分配的 int 对象 std::shared_ptr<int> ptr1 = std::make_shared<int>(10); // 使用智能指针 std::cout << "...
深入理解std::shared_ptr:原理、用法及其线程安全性 在C++ 中,智能指针是现代内存管理的重要工具,尤其是在复杂的多线程环境中,能显著减少内存泄漏和悬空指针等问题。std::shared_ptr是 C++11 引入的一种共享智能指针,通过引用计数机制管理对象的生命周期。本文将详细介绍std::shared_ptr的基本用法、循环引用问题、线...
智能指针shared_ptr的用法 std::shared_ptr<T>::reset https://en.cppreference.com/w/cpp/memory/shared_ptr http://www.cplusplus.com/reference/
std::shared_ptr的核心机制是引用计数:每个std::shared_ptr会维护一个计数器,记录当前有多少个指针共享同一个对象。 2. 基本用法 #include <iostream>#include <memory> class MyClass {public: MyClass%28%29 { std::cout << "MyClass 构造函数" << std::endl; } ~MyClass%28%29 { std::cout <<...
基本用法 //1 创建 int main() { // 创建一个 shared_ptr 并指向新建的 MyClass 对象 std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>(42); // 访问对象的方法 std::cout << "Value: " << ptr1->GetValue() << std::endl; ...
在C++中,std::shared_ptr是一种智能指针,用于管理动态分配的内存。它允许多个shared_ptr共享同一块内存,避免了内存泄漏和悬空指针的问题。 使用std::shared_ptr的基本用法是创建一个shared_ptr对象,将其指向动态分配的内存,并在不需要使用该内存时释放它。例如: #include <memory> int main() { // 创建一个...
std::shared_ptr是一种通过指针保持对象共享所有权的智能指针。多个shared_ptr对象可持有同一对象。下列情况之一出现时销毁对象并解分配其内存: 最后剩下的持有对象的shared_ptr被销毁; 最后剩下的持有对象的shared_ptr被通过operator=或reset()赋值为另一指针。
1 基本用法 本文主要参考官网的介绍,结合结合自己的一些理解 std::shared_ptr 是一种智能指针,多个shared_ptr可以指向同一个对象,至少有一个shared_ptr指向该对象时,该块内存不会被释放,直到所有指向该内存对象的shared_ptr都被回收或者通过 operator= or reset() 修改了指向的对象时,该对象的内存才会被自动释放。
用法有: reset(T*p):智能指针指向新对象,原来指向的对象的引用计数减1(若减后为0则析构),指向的新对象的引用计数加1 reset(): 原来指向的对象的引用计数-1,然后自己变成null。 usecount:表示智能指针指向的对象(其实说指向的内存更确当)的引用计数,即有多少个智能指针同时指向了它,指向同个对象的智能指针的...
3. 学习转换函数的用法 std::static_pointer_cast<T>: 静态转换,用于在具有明确类型关系的类型之间进行转换。 std::dynamic_pointer_cast<T>: 动态转换,用于在具有多态关系的类型之间进行转换,并且会检查类型兼容性。 std::const_pointer_cast<T>: 用于在const和非const类型之间进行转换。