很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto_ptr危险但常见的误用,这些误用会引发间断性发作、难以诊断的bug。
1.为什么称它为“自动”指针?auto_ptr只是众多可能的智
转载
2015-12-16 17:19:00
200阅读
2评论
如果面试官让你写一个智能指针,那你就写unique_ptr#include<iostream>#include<stdlib.h>//C++11//unique_ptr:简单粗暴,防拷贝。效率高,鼓励公司使用namespace juju{ template<class T> class unique_ptr { public: uniqu...
原创
2021-08-10 10:22:46
119阅读
形参为unique_ptr u2,而后实参为std::move(unique_ptr u1),这样会将原本u1的内存传递给u2,避免了传递拷贝。例如:
转载
2018-04-08 17:52:00
592阅读
2评论
std::unique_ptr 是一个独占型的智能指针,它不允许其他的智能指针共享其内部的指针 一、初始化 (1)构造函数初始化: 可以通过它的构造函数初始化一个独占智能指针对象,但是不允许通过赋值将一个 unique_ptr 赋值给另一个 unique_ptr。 // 通过构造函数初始化对象 un ...
转载
2021-08-15 12:12:00
226阅读
2评论
std::unique_ptr std::unique_ptr 是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于 std::shared_ptr 允许多个 shared_ptr 引用同一个裸指针,它没有引用计数,它的性能比 shared_ptr 会...
转载
2020-07-17 09:53:00
171阅读
2评论
将std::unique_ptr转换成std::shared_ptr:std::shared_ptr temp = std::shared_ptr(std::move(TObject));
原创
2022-06-21 20:33:30
367阅读
一、VS例子 二、Qt例子 mainwindow.h: mainwindow.cpp: 现象: 在new A的时候打印A,在窗口关闭后,自动回收A的内存,打印~A。 三、智能指针数组 mainwindow.h mainwindow.cpp 现象: 在new的时候打印A,在pop之后打印~A 四、智能
转载
2019-06-24 17:31:00
148阅读
2评论
unique_ptr 为独占的智能指针,与所指对象的内存绑定紧密,不能与其他unique_ptr类型的指针对象共享所指对象的内存。比如 unique_ptr<TEST> p1(new TEST("case_1")); auto p44 = p1;编译是不能通过的。可以通过move来转移内存 unique_ptr<TEST> p1(new...
原创
2021-07-13 11:00:30
148阅读
C++ 智能指针是C++标准库提供的类模板,用于自动管理动态分配的对象的生命周期。它们旨在解决传统原始指针可能导致的内存泄漏和资源未正确释放等问题,通过封装对动态内存的访问和控制,实现自动化的资源清理。
原创
2024-05-10 10:19:19
1442阅读
智能指针实质就是重载了->和*操作符的类,由类来实现对内存的管理,确保即使有异常产生,也可以通过智能指针类的析构函数完成内存的释放。 一、shared_ptr认知及陷阱 shared_ptr的类型转换不能使用一般的static_cast,这种方式进行的转换会导致转换后的指针无法再被shared_pt
原创
2021-08-23 11:51:07
1013阅读
背景谈起C++,它被公认为最难学的编程语言之一,不仅语法知识点广泛,细节内容之多,学习难度和学习周期也长,导致好多新入行的开发者对C++“敬而远之”,甚至“从入门到放弃”。自C++11开始,好多C++程序员慢慢的感受到了C++的魅力所在,似乎难度也越来越小。本文要讲的是C++11引入的智能指针之std::unique_ptr。std::unique_ptr系C++11引入的智能指针,拥有资源的
原创
精选
2022-06-01 20:43:26
10000+阅读
点赞
std::unique_ptr 可以用来获取指针指向位置的实际地址,但是如果在 reset() 之前被暂存起来了,那么 reset() 之后便不会影响存起来的那个值
原创
2022-09-23 13:49:02
1180阅读
C++ std::unique_ptr:独占内存的智能指针
在 C++ 内存管理领域,std::unique_ptr是个 “专一” 的角色 —— 它像一把专属钥匙,只允许自己持有某块动态内存的所有权,不允许其他指针共享。这种 “独占特性” 让它在需要严格控制内存归属的场景中格外好用,既能自动释放内存避免泄漏,又能杜绝因多指针共享导致的重复释放问题。
和std::shared_ptr的 “共享引用计
// TestAutoPtr.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include
原创
2012-09-20 22:26:57
1266阅读
在 C++ 中,std::unique_ptr 和 std::shared_ptr 都支持自定义删除器(deleter),但它们在实现和使用上有一些关键区别。以下是它们的异同点: 相同点 支持自定义删除器 两者都允许通过模板参数或构造函数参数指定删除器,用于管理资源释放(如文件句柄、内存、网络连接等
来源:微信公众号「编程学习基地」文章目录unique_ptr基本使用创建空的unique_ptr对象new一个unique_ptr对象make
原创
2022-03-15 09:52:08
174阅读
来源:微信公众号「编程学习基地」文章目录unique_ptr基本使用创建空的unique_ptr对象new一个unique_ptr对象make_unique创建unique_ptr对象获取被管理对象的指针重置 unique_ptr 对象转移
原创
2021-07-01 11:43:28
736阅读
通过剖析源码,我们看到它本质上只是一个包裹了“原始指针 + 删除器”的类。通过移动语义release())精巧地实现了所有权的转
在C++的现代编程范式中,std::unique_ptr 无疑是一座里程碑。它轻盈、高效,几乎是零开销抽象(Zero-overhead Abstraction)的完美典范。大多数教程止步于其用法:独占所有权、自动释放资源、支持移动语义。但今天,我们将深入其源码腹地(以GCC libstdc++为例),揭开它巧妙运用模板、类型萃取和元编程技术实现这些特性的神秘面纱,领略其平凡名字背后不平凡的设计之美
c++11 条款21:尽量使用std::make_unique和std::make_shared而不直接使用new c++11 条款18: 使用std::unique_ptr来进行独享所有权的资源管理 https://msdn.microsoft.com/zh-cn/library/hh279676
转载
2016-06-07 10:14:00
157阅读
2评论