相关推荐
-
c++智能指针的创建
c++智能指针的创建 c及c++中的指针是很麻烦的 所以现在有很多技巧去减少问题的出现。 欢迎大家给出意见。
-
内存拷贝函数之memcpy函数和memmove函数
memcpy函数: 函数用途: 将一个指针指向的内存拷贝至另外一个指针指向的内容. 函数原型: void*memcpy(void* destination, const void* source, size_t num); void*是为了让这个函数可以拷贝所有类型的指针对应的内存而不是某种特定指针, num是拷贝的字节数. 代码演示: #include <stdio.h> #include <string.h> int main() { int arr1[
-
C++智能指针详解
除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。在C++中,动态内存的管理是用一对运算符完成的:new和delete。 new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针; delete:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。动态内存管理经常会出现两种问题: (1)一种是忘记释放内存,会造成内存泄漏; (2)一种是尚有指针引用内存的情况
-
C++——智能指针
智能指针是代理模式的具体应用,它使用RAII技术代理了裸指针,能够自动释放内存,无需程序员干预。如果指针是“独占”使用,就应该选择unique_ptr,它为裸指针添加了很多限制,更加安全。如果指针是“共享”使用,就应该选择shared_ptr,它的功能非常完善,用法几乎与原始指针一样。应当使用工厂函数make_unique()、make_shared()来创建智能指针,强制初始化,而且还能使用auto来简化声明。..........................................
-
C++基础智能指针
独占智能指针会“拥有”它所指向的对象,某一时刻,只能有一个unique_ptr指向给定的对象,当该指针被销毁时,指向的对象也会随之释放。shared_ptr共享他指向的对象,多个共享指针可以指向(关联)相同的对象,在内部采用计数器机制来实现当新的shared_ptr与对象关联时,引用计数器增加1当shared_ptr超出作用域时,引用计数器减1,当引用计数器变为0时,则表示没有任何shared_ptr与对象关联,则释放该对象class Testpublic://名字。
-
C++ 使用智能指针shared_ptr/unique_ptr管理数组
关于shared_ptr/unique_ptr的基础,我不在本篇博客中赘述。本篇博客主要关注如何安全地使用智能指针来管数组。 零、要管理的类 Connection是一个管理连接的类。 class Connection{ public: explicit Connection(string name):_name(name){ } string get_name() cons...
-
c/c++ 数组的智能指针 使用
数组的智能指针 使用 数组的智能指针的限制: 1,unique_ptr的数组智能指针,没有*和->操作,但支持下标操作[] 2,shared_ptr的数组智能指针,有*和->操作,但不支持下标操作[],只能通过get()去访问数组的元素。 3,shared_ptr的数组智能指针,必须要自定义deleter 小例子 #include <iostream> #include &...
-
C++学习笔记03-智能指针(shared_ptr,unique_ptr)和动态分配的数组
一,内存 静态内存,栈内存,堆内存 ①静态内存 存储局部static对象和类的static对象以及定义在任何函数之外的变量 ②栈内存 栈内存用于保存定义在函数体内非static对象。 ③堆内存 运行需要创建时,才申请的内存空间,只有当程序结束时,才回收,也就是说我们如果不需要这个对象时,我们必须手动释放这块内存空间,否则造成内存泄漏 ④智能指针 智能指针可以在我们不需要动态申请的内存时,自动把这些内存归还给系统,防止了内存泄漏, 而且我们通常会忘记delete动态申请的内存(智能指针的使用需要包含) 二,s
-
C++ 智能指针 - 全部用法详解
血的教训?不学智能指针,本人丢了一份工作。
-
C++中各种智能指针的实现及弊端(一)
C++中各种智能指针的实现及弊端(一) 一、为什么需要智能指针? 首先看一段代码: #include <vector> void _MergeSort(int* a, int left, int right, int* tmp) { if (left >= right) return; int mid = left + ((right - left) >> 1); /...
-
C++智能指针——探究六个常见的智能指针的使用及原理
一、智能指针 1.什么是智能指针? ——是一个类,用来存储指针(指向动态分配对象的指针)。 2.智能指针满足的条件: 1.具有RAII思想 2.能够像指针一样(运算符重载,解引用,指向对象成员) 3.对资源进行封装和管理 RAII思想(资源分配及初始化) 1.定义一个类来封装资源的分配与释放, 2.构造函数中完成资源的分配及初始化; 3.析构函数中完成资源的清理,可以保证资源的正确...
-
智能指针和万能指针
智能指针:智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类。除了能够在适当的时间自动删除指向的对象外,他们的工作机制很像C++的内置指针。智能指针在面对异常的时候格外有用,因为他们能够确保正确的销毁动态分配的对象。他们也可以用于跟踪被多用户共享的动态分配对象。 智能指针的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个**计数器**与类指向
-
21.手写实现智能指针类
template <class T> class SmartPointer { public: //普通构造函数, 设定T * ptr的值,并将引用计数设为1 SmartPointer(T * ptr) { ref = ptr; ref_count = new unsigned; *ref_count = 1; } //指针拷贝构造函数,新建一个指向已有对象的智...
-
C++11 使用智能指针管理动态数组
#include<iostream> #include<memory> template<typename T> std::shared_ptr<T> make_shared_array_tpl(size_t size) { return std::shared_ptr<T>(new T[size], std::default_...
-
C++深度探索系列:智能指针(Smart Pointer) [一]
主题索引:一、剖析C++标准库智能指针(std::auto_ptr) 1.Do you Smart Pointer? 2.std::auto_ptr的设计原理 3.std::auto_ptr高级使用指南 4.你是否觉得std::auto_ptr还不够完美?二、C++条件,寻找构造更强大的智能指针(Smart Pointer)的 策略 1.
-
数组(Array) 与 智能指针
数组(Array) 与 智能指针关于智能指针处理数组对象,并不是很常见,因为有可能需要自定义删除方法。
-
【C++学习】智能指针
介绍了智能指针产生的原因以及原理(RAII和像指针一样),还有多版本的智能指针,拷贝会悬空的auto_ptr,不能拷贝和赋值的unique_ptr,比较完美的shared_ptr,为了解决循环引用的weak_ptr,以及智能指针的线程安全,最后还介绍了定制删除器。
15 楼 wangxinpier 2009-08-18 17:24
14 楼 風一樣的男子 2009-08-17 17:25
13 楼 neptune 2009-08-17 09:34
12 楼 朗拿颠老 2009-08-17 09:04
11 楼 lengyun3566 2009-08-17 08:23
正式版的是不是还没有
10 楼 treblesoftware 2009-08-17 00:28
9 楼 zhuxinyu 2009-08-17 00:14
8 楼 wxq594808632 2009-08-16 23:36
同感..没怎么熟悉呢
7 楼 steeven 2009-08-16 13:47
现在已经是被滥用的趋势了,比如ejb3里面很多监听器,连接口都没有了,就靠annotation, 太搞笑了。
6 楼 whaosoft 2009-08-15 11:39
无话可说
5 楼 xpf7622 2009-08-15 10:08
4 楼 flyfan 2009-08-15 09:58
3 楼 rongzhi_li 2009-08-15 09:09
2 楼 yuanshaohua 2009-08-15 02:55
1 楼 evanerv0079 2009-08-14 14:31