文档章节

shared_ptr<>动态分配内存

rose_willow
 rose_willow
发布于 2017/09/04 15:46
字数 178
阅读 7
收藏 0
点赞 0
评论 0

// #include <iostream>

#include <string>

#include <memory>

// class menu{

// public:

// menu() = default;

// menu(int one,int two):a(one),b(two){};

// int show(){

// // this->a = a;

// // this->b = b;

// return a+b;

// };

// private:

// int a;

// int b;

// };

int main()

{

// int *p = new int(2252);

// std::cout<<"new dynamic memory's address "<<p<<std::endl;

// std::cout<<"value of the dynamic space "<<*p<<std::endl;

// delete p;

// p = nullptr;

// std::cout<<"freed memory address "<<p<<std::endl;

// std::cout<<"freed memory value "<<*p<<std::endl;

// std::shared_ptrstd::string one = std::make_sharedstd::string("what the hell is going one ?");

// std::cout<<one<<std::endl;

// std::cout<<*one<<std::endl;

// std::shared_ptr<menu> two = std::make_shared<menu>(3,4);

// std::cout<<two<<std::endl;

// std::cout<<two->show()<<std::endl;

// std::cout<<two->show(333,444)<<std::endl;

std::unique_ptr<int> up;

up.reset(new int);

// std::cout<<"up="<<up<<std::endl;

// std::cout<<"*up="<<*up<<std::endl;

*up = 20;

std::cout<<"*up="<<*up<<std::endl;

// std::cout<<"up ="<<up<<std::endl;

*up = 30;

std::cout<<"*up ="<<*up<<std::endl;

up.reset();

std::cin.get();

std::cin.get();

return 0;

}

© 著作权归作者所有

共有 人打赏支持
rose_willow
粉丝 0
博文 90
码字总数 15682
作品 0
石家庄
运营/编辑
动态内存与智能指针

前言 1.生命周期 全局对象:程序启动时分配,程序结束时销毁 局部自动对象:执行流进入其定义的块时分配,执行流退出其定义的块时销毁 局部static对象:程序启动时分配(但在其定义的块或作用...

种地瓜 ⋅ 2016/04/05 ⋅ 0

c++ 智能指针及 循环引用问题

c++智能指针介绍 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete,比如流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不...

gfsfg8545 ⋅ 2014/04/07 ⋅ 0

《Effective C++》 读书笔记之三 资源管理

《Effective C++》 读书笔记之三 资源管理 准备知识: 所谓资源就是,一旦用了它,将来必须还给系统。最常用的资源是动态分配内存,其他常见的资源有文件描述器、互斥锁、图形界面的字形和笔...

wbf961127 ⋅ 2017/11/14 ⋅ 0

Qt 智能指针学习

从内存泄露开始? 很简单的入门程序,应该比较熟悉吧 ^_^ #include include int main(int argc, char *argv[]){ } 在 从 Qt 的 delete 说开来 一文中,我们提到这个程序存在内存泄露(表现就是...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

CUDA学习(五十一)

动态全局内存分配和操作: 动态全局内存分配和操作仅受计算能力2.x和更高的设备支持 从全局内存中的固定大小的堆中动态分配和释放内存: 将src指向的内存位置的大小字节复制到dest指向的内存...

night李 ⋅ 02/19 ⋅ 0

C++之智能指针

我们都知道,C和C++常被人诟病的一点就是程序员需要自己来维护对动态内存的申请和释放,具体来说就是malloc/free和new/delete的成对出现。能够保证它们成对出现,是一个良好的编程习惯,但是...

pathenon ⋅ 2012/11/27 ⋅ 0

C++智能指针

1 使用智能指针的原因   我们知道C/C++的指传统针可以用来通过指向对象地址来间接访问该对象,但是当某个指针指向人为申请的堆空间,我们时常忘记手动释放该空间从而造成内存泄漏。我们可以...

fx677588 ⋅ 2017/08/13 ⋅ 0

C++智能指针的分析与使用

手动管理的弊端 在简单的程序中,我们不大可能忘记释放 new 出来的指针,但是随着程序规模的增大,我们忘了 delete 的概率也随之增大。在 C++ 中 new 出来的指针,赋值意味着引用的传递,当赋...

Tanswer_ ⋅ 01/11 ⋅ 0

C++Primer第五版 第十二章习题答案(11~20)

11:知识点1:理解变量的销毁与其内存的释放之间的关系:内置类型的指针在离开作用域时,本身会被销毁,但是其指向的内存空间什么都不会发生,必须以显式的delete进行释放空间。智能指针在离...

misayaaaaa ⋅ 2017/03/05 ⋅ 0

Boost 智能指针

auto_ptr autoptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。autoptr 在拷贝和赋值的时候有不寻常的行为,因此...

吃一堑消化不良 ⋅ 2015/08/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部