shared_ptr

shared_ptr 循环引用以及解决办法

问题代码 #include <memory> #include <stdio.h> using namespace std; class A; class B { public: B() { printf("B()\n"); } ~B() { printf("~B()\n"); } void pri ......
shared_ptr 办法 shared ptr

借shared_ptr实现写时复制(COW)

原理 1、使用智能指针管理共享资源 2、write端,若引用计数为1,则write端独占资源,若引用计数不为1,则对共享资源备份进行写操作,以确保线程安全 3、read端,读之前引用计数加1,write端此时若并发访问共享资源,则会发现引用计数不为1,write端不会直接写共享资源,确保线程安全 代 ......
shared_ptr shared ptr COW

C++(std::shared_ptr 的成员函数 reset)

std::shared_ptr 是 C++ 标准库提供的智能指针类型之一,用于管理动态分配的资源。reset 是 std::shared_ptr 类的成员函数之一,用于重新分配或重置 std::shared_ptr 所拥有的指针。 以下是 reset 成员函数的基本解释: 函数签名: templat ......
shared_ptr 函数 成员 shared reset

C++(std::shared_ptr)

std::shared_ptr 是 C++ 标准库中的一个智能指针类,用于管理动态分配的内存。它提供了一种共享拥有权(shared ownership)的机制,通过引用计数来跟踪指向同一块内存的所有 std::shared_ptr 实例。当最后一个 std::shared_ptr 被销毁时,它会自动 ......
shared_ptr shared std ptr

unique_ptr 和 shared_ptr

`unique_ptr` 和 `shared_ptr` 是 C++ 标准库中的智能指针,用于管理动态分配的对象的生命周期,以避免内存泄漏和手动资源管理的问题。 1. **`unique_ptr`:** - `std::unique_ptr` 是一个独占所有权的智能指针,确保在任何时候只有一个 `un ......
unique_ptr shared_ptr ptr unique shared

C++ | 智能指针之模仿实现shared_ptr

template<class T> class Shared_pointer{ private: ssize_t *_ref_count; // 计数器的指针 T *_ptr; // 元素的指针 std::mutex *mtx; // 计数器的锁 public: explicit Shared_po ......
指针 shared_ptr 智能 shared ptr

shared_ptr在多线程下的安全性问题

1. 引用 boost官方文档中有如下结论: https://www.boost.org/doc/libs/1_57_0/libs/smart_ptr/shared_ptr.htm#ThreadSafety 1)同一个shared_ptr被多个线程“读”是安全的; 2)同一个shared_ptr被多 ......
线程 shared_ptr 安全性 shared 问题

手撕智能指针shared_ptr

#include <bits/stdc++.h> using namespace std; class Count { private: int cnt; public: Count() :cnt(1) {} ~Count() = default; void addcount() { ++cnt; ......
指针 shared_ptr 智能 shared ptr

C++11中的智能指针shared_ptr、weak_ptr源码解析

https://www.jb51.net/article/224028.htm − 目录 1、前言 2、源码准备 3、智能指针概念 4、源码解析 4.1、shared_ptr解析 4.1.1、shared_ptr 4.1.2、__shared_ptr 4.1.3、__shared_count 4.1 ......
指针 shared_ptr ptr 源码 weak_ptr

std::shared_ptr 线程安全方面的思考

一直惦记着 std::shared_ptr 线程安全的问题,看了些文章后,又怕过段时间忘记了,遂记录下来 std::shared_ptr 的线程安全问题主要有以下两种: 引用计数的加减操作是否线程安全 std::shared_ptr 修改指向时是否线程安全 第一个问题的答案: 是线程安全的,因为是原 ......
线程 shared_ptr 方面 shared std

unique_ptr 与 shared_ptr 的 deleter

使用`std::unique_ptr`定义(声明)一个对象的时候,需要知道这个对象的`Deleter`,`std::unique_ptr`的原型如下: ```cpp template > class unique_ptr; ``` 如果在定义/声明一个unique_ptr对象的时候,这个对象是`im ......
unique_ptr shared_ptr ptr deleter unique

shared_ptr包装this指针构造bug

[toc] * 成员函数里用shared_ptr包装this指针,当shared_ptr析构了,就会调用this对象的析构函数,是非常可怕的事情。 ``` class A { void eat() { std::shared_ptr p(this); ptr->status = "吃了"; } } ......
指针 shared_ptr shared this ptr

shared_ptr的循环引用

class Controller { public: Controller() = default; ~Controller() { std::cout << "in ~Controller" << std::endl; } class SubController { public: SubCont ......
shared_ptr shared ptr

Incomplete types and shared_ptr / unique_ptr

If the object being deleted has incomplete class type at the point of deletion and the complete class has a non-trivial destructor or a deallocation f ......
Incomplete shared_ptr unique_ptr ptr shared

C++智能指针:shared_ptr、unique_ptr

C++内存资源管理不当。比如:(1) 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;(2) 有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);(3) 没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存资源越来越多 ......
指针 shared_ptr unique_ptr ptr 智能

c++ 智能指针std::shared_ptr

c++11中常用的智能指针有shared_ptr,unique_ptr与weak_ptr。 unique_ptr是独占型指针,其计数永远为1,无拷贝构造函数,但可以使用std::move转移资源所有权。 weak_ptr没有资源所有权,一般用来辅助shared_ptr使用,多使用于多线程,循环等场景 ......
指针 shared_ptr 智能 shared std

设计shared_ptr

###my_shared_ptr.h ``` #include #include template class my_shared_ptr { private: T* m_ptr = nullptr; unsigned int* ref_count = nullptr; void swap(my_s ......
shared_ptr shared ptr

C++-shared_ptr

C++-shared_ptr #include <iostream> #include <memory> #include <vector> class A { public: A(){ std::cout<<"A cc."<<std::endl; }; ~A(){ std::cout<<"A dd ......
shared_ptr shared ptr

shared_ptr,unique_ptr和make_shared,make_unique

std::shared_ptr<widget> p(new widget()); auto p=std::make_shared<int>(widget); 两者的不同: 1.使用make_shared的时候widget只写了一次, 2.当遇到函数传参时,由于编译器执行顺序的不同,如果使用share ......
shared unique make make_shared make_unique

C++ shared_ptr 虚析构函数 特殊

class a{ public: ~a(){cout<<"a"<<endl; } class b:public a{ public: ~b(){cout<<"b"<<endl; } void main(){ shared_ptr A; { shared_ptr B(new b());//智能指针内部 ......
shared_ptr 函数 shared ptr

shared_ptr 自定义 deleter 删除器

class Bar { public: Bar(int ii) : i(ii) { cout << "Bar(" << i << ")" << endl; } ~Bar() { cout << "~Bar(" << i << ")" << endl; } int i; }; void deleter ......
shared_ptr deleter shared ptr

C++中的shared_ptr和weak_ptr

shared_ptr 和 weak_ptr shared_ptr 相关特性 引用计数,使用得当一般不会出现内存问题 一般和 make_shared 结合使用,因为 shared_ptr 本身会有两个变量,一个是存储原先对象,一个是存储引用计数,一般这两个内存地区会离得比较远,make_shared ......
shared_ptr ptr weak_ptr shared weak

C++11之智能指针shared_ptr

在 C++ 开发中,我们经常会遇到程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。C++11 新标准中,增添了 unique_ptr、shared_ptr 以及 weak_ptr 这 3 个智能指针来实现堆内存的自动回收,今天就简单的介绍一下 ......
指针 shared_ptr 智能 shared ptr

【学习总结】智能指针shared_ptr和unique_ptr使用汇总

1.shared_ptr 1.1 shared_ptr介绍 shared_ptr主要用于托管动态分配的内存。 在程序中动态分配了一块内存,这块内存可以是变量可以是对象,为了避免内存泄露,我们必须在整个程序的所有可能跑到的分支,保证这块内存不用了之后可以得到正确的释放。 普通指针使用起来麻烦,而且使用 ......
指针 shared_ptr unique_ptr ptr 智能

C++11 shared_ptr智能指针(超级详细)

在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如: 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用; 有些内存资源已经被释放,后期又试图再释放一次(重复释 ......
指针 shared_ptr 智能 shared ptr
共25篇  :1/1页 首页上一页1下一页尾页