c语言 ptr 用法,C++之智能指针std::shared_ptr简单使用和理解
1 智能指针std::shared_ptr相关知识和如何使用
我们这里先说下智能指针std::shared_ptr,因为我看到我我们项目c++代码里面用得很多,我不是不会,所以记录学习下
先让ubuntu终端支持c++11,如果自己的电脑还没配置号,可以先看下我的这篇博客linux之让终端支持C++11/14编译cpp文件
1) 所在的头文件
#include
2) 介绍:
shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting),比如我们把只能指针赋值给另外一个对象,那么对象多了一个智能指针指向它,所以这个时候引用计数会增加一个,我们可以用shared_ptr.use_count()函数查看这个智能指针的引用计数,一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除,当我们程序结束进行return的时候,智能指针的引用计数会减1,不知道我理解有没有问题.有的话请老铁们指出.
3) share_ptr的三种初始化方法
1.通过一个指向堆上申请的空间的指针初始化(切记不要用栈上的指针,否则,当智能指针全部释放控制权(栈中的对象离开作用域本身就会析构一次),将会析构对象,导致出错)
比如如下
int a = new int(100);
std::shared_ptr ptr(a); //我们不能写成std::shared_ptr ptr = a;这样写错误,不行你编译运行看下,编译不过
2. 通过make_shared函数得到
std::shared_ptr ptr1 = std::make_shared(
c语言 ptr 用法,C++之智能指针std::shared_ptr简单使用和理解相关推荐
- C++ 智能指针std::shared_ptr简单使用和理解
参考:https://blog.csdn.net/u011068702/article/details/83692838 1 智能指针std::shared_ptr相关知识和如何使用 我们这里先说下 ...
- C++之智能指针std::shared_ptr简单使用和理解
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程 1 智能指针std::shared_ptr相关知识和如何使用 我们这里先说下智能指针std::sha ...
- C++笔记:智能指针 std::shared_ptr
1. 语法 std::shared_ptr<类型> 变量名称{}: std::shared_ptr<int> ptrA{};std::shared_ptr<int> ...
- C++11 智能指针之shared_ptr
0.Overview 在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃.程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的.比如: 有些内存资源已经被释 ...
- C++ 实现智能指针:shared_ptr 和 unique_ptr
简 述: C++11 智能指针的深入分析,和动手实现简版的智能指针 std::shared_ptr .std::unique_ptr 文章目录 背景 std::shared_ptr 原理 代码 ref ...
- C++智能指针:更简单、更高效的内存管理方法
C++智能指针:从新手到高手的心理密码C++ Smart Pointers: Psychological Passcodes from Beginner to Expert 智能指针简介 (Intro ...
- 智能指针之shared_ptr易错点05
一 shared_ptr易错点 1 慎用裸指针给shared_ptr赋值 例1 class A {public:A() {};A(int i) {m_i=i;cout<<"A&q ...
- 【C++11新特性】 C++11智能指针之shared_ptr
http://blog.csdn.net/Xiejingfa/article/details/50750037 原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/ar ...
- C++智能指针之shared_ptr
C++智能指针之shared_ptr 前言 一.Shared_ptr 1.1 shared_ptr类的操作 1.2 make_shared函数 1.3 shared_ptr的拷贝赋值 1.4 shar ...
最新文章
- ORM对mysql数据库中数据进行操作报错解决
- java 项目使用 ajaxfileupload
- oracle10g 学习 方向DBA三
- 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )
- 二十万字C/C++、嵌入式软开面试题全集宝典一
- 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数
- ssh首次连接时提示yes/no
- php 上传文件简单实例,php文件上传的简单实例
- es 吗 查询必须有sort_ElasticSearch DSL之From/Size,Sort
- nginx php 防止跨站,Nginx下多网站单独php-fpm进程目录权限防跨站
- Python机器学习:梯度下降法007使用scikit中的随机梯度下降法
- Codeforces 484E Sign on Fence(是持久的段树+二分法)
- FAT32文件系统结构
- 口碑营销遇见互联网,企业如何做好网络口碑营销?
- 裂变活动的5个关键步骤?
- 解决MarkDown上传本地图片无法显示
- kprobe 的 3 种使用
- jLBJwOvvyU
- 工控网关linux用什么芯片,重庆工控嵌入式主板原理,工业网关怎么挑
- 中国联通dns服务器未响应,关于光猫设置的说明和常见问题
热门文章
- 水淼·关键词网址采集器
- object...object和object[]...obj[]的区别
- ​大数据和云计算技术周报(第37期)
- Python入门习题大全—— 3 的倍数
- 车间动态调度的研究方法
- 大型企业网络安全解决方案
- CSS 属性 content 有什么作用? 有什么应用?(琐碎知识点整理)
- Vin码/车架号扫描识别sdk技术
- 数据孤岛下的新破局 Real Time DaaS:面向 AP+TP 业务的数据平台架构
- 解决TraceCompass网站打不开和Stackoverflow显示不全的问题