摘要: 本文我们主要来总结一下前文介绍过的智能指针相关原理及实现,顺便补充一下前文未提到的shared_ptr删除器部分的内容. 总结: 1.智能指针,通过RAII机制,构造对象时完成资源的初始化,析构对象时,对资源进行清理和汕尾. 2.auto_ptr,防止拷贝/赋值对象后,析构时多次delete对象导致 阅读全文
posted @ 2017-04-03 17:05 C/C++专题 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 总结一下前文内容: 1.智能指针通过RAII方法来管理指针:构造对象时,完成资源初始化;析构对象时,对资源进行清理及汕尾. 2.auto_ptr,通过“转移所有权”来防止析构一块内存多次.(如何转移?详情看第二篇文章) 3.scoped_ptr,不“转移所有权”而是禁止拷贝/赋值对象.(C++如何禁 阅读全文
posted @ 2017-04-03 11:50 C/C++专题 阅读(3648) 评论(0) 推荐(0) 编辑
摘要: 在开始本文内容之前,我们再来总结一下,前文内容: 1.智能指针采用RAII机制,在构造对象时进行资源的初始化,析构对象时进行资源的清理及汕尾. 2.auto_ptr防止拷贝后析构释放同一块内存,采用"转移所有权"的方法.(实际开发中auto_ptr并不实用) 3.scoped_ptr与auto_pt 阅读全文
posted @ 2017-04-03 10:56 C/C++专题 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr,通过转移管理权来完成对象的拷贝与赋值,在实际开发中并不实用. 回顾完智能指针的背景及auto_pt 阅读全文
posted @ 2017-04-01 22:09 C/C++专题 阅读(5214) 评论(1) 推荐(0) 编辑
摘要: 首先,我要声明auto_ptr是一个坑!auto_ptr是一个坑!auto_ptr是一个坑!重要的事情说三遍!!! 通过上文,我们知道智能指针通过对象管理指针,在构造对象时完成资源的分配及初始化,在析构对象时完成资源的清理及汕尾工作. 因此,可以得到一份简洁版的智能指针代码: 大致一看,没毛病!突然 阅读全文
posted @ 2017-03-31 21:26 C/C++专题 阅读(932) 评论(0) 推荐(0) 编辑
摘要: 智能指针是C++中一种利用RAII机制(后面解释),通过对象来管理指针的一种方式. 在C++中,动态开辟的内存需要我们自己去维护,在出函数作用域或程序异常退出之前,我们必须手动释放掉它,否则的话就会引起内存泄漏. 例如:我们用指针变量来创建对象时,需要手动来删除它 事实上,即使我们非常谨慎,但有时候 阅读全文
posted @ 2017-03-31 20:40 C/C++专题 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 本文主要总结在C++中指针与引用的区别. 从定义与性质来看指针与引用有如下区别: 指针表示的是一块变量的地址 引用表示一个变量的别名. 因此指针变量需要占用空间(一个指针变量在32位系统下占用4字节,64位系统下占用8字节); 理论上来说,引用不需要占用空间.(但引用的底层也是靠指针来实现的,不要问 阅读全文
posted @ 2017-03-30 20:02 C/C++专题 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 题目要求 编写一个C语言程序模拟实现strlen函数. 算法 strlen函数功能是计算字符串中字符的个数.(除\0外) 而字符串本身就是一个字符数组,只不过末尾以\0结束. 因此,我们只需遍历除\0之外的所有字符即可. 有三种方法可以解决这个问题. 算法总结 方法一:设置一个整型计数器,遍历字符串 阅读全文
posted @ 2016-12-07 19:43 C/C++专题 阅读(3238) 评论(0) 推荐(0) 编辑
摘要: atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转 阅读全文
posted @ 2016-11-17 22:31 C/C++专题 阅读(1860) 评论(1) 推荐(1) 编辑
摘要: 看了《Effctive C++》,里面提到用对象去管理资源,可以有效防止内存泄漏. 结合auto_ptr特性,稍微思考了一下,实现了一个简单的auto_ptr (因为代码量小,就不分文件了) 所以这个auto_ptr感觉还有挺坑的,只能有一个对象掌握资源,如果想用多个对象管理同一资源的话....考虑 阅读全文
posted @ 2016-11-17 21:06 C/C++专题 阅读(564) 评论(0) 推荐(0) 编辑