智能指针
发布日期:2022-02-10 13:35:53
浏览次数:20
分类:技术文章
本文共 705 字,大约阅读时间需要 2 分钟。
一、什么是智能指针?
一句话解释:
智能指针就是类模板。智能指针就是封装好的能够自动释放内存的对象。是不是感觉和Java的自动内存回收机制有点类似?!其实使用过MFC连接数据库的基本都是使用过类似的智能指针。例如:CxxxPtr类。
二、智能指针的详解
网上有许多关于这方面的内容。详细可以看这几个链接:
三、要点总结
1.智能指针和一般指针初始化的区别。
void UseRawPointer(){ //一般指针的初始化 Song* pSong = new Song(L"Nothing on You",L"Bruno Mars"); //不要忘了! delete pSong;}void UseSmartPointer(){ //在栈上通过一般指针对象,参数传递初始化 unique_ptr2.std::auto_ptr(即标准库的智能指针)song2(new Song(L"Nothing on You",L"Bruno Mars"));} //退出函数时自动删除,不用delete
(1)尽量不要使用“operator=”。如果使用了,右边的值(即先前的对象)不能再被使用,否则会出错。
(2)成员函数release()只是归还对象的所有权,不会释放对象,使用reset()成员函数就可以了。
(3)最好不要当成参数传递。
(4)最好在代码的独立行上创建智能指针,不要再参数列表中创建,否则会由于某些参数分配规则而发生轻微的
资源泄露情况。
(5)由于标准库的智能指针有诸多的限制,所以可以使用boost的智能指针或者Loki的智能指针。转载地址:https://blog.csdn.net/zoopang/article/details/24873695 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月03日 12时19分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Leetcode刷题篇】leetcode230 二叉搜索树中第K小的元素
2019-04-26
【Leetcode刷题篇】leetcode173 二叉搜索树迭代器
2019-04-26
【Leetcode刷题篇】leetcode99 恢复二叉搜索树
2019-04-26
【Leetcode刷题篇】leetcode451根据字符出现频率排序
2019-04-26
【Leetcode刷题篇】leetcode703 数据流中的第k大元素
2019-04-26
【Leetcode刷题篇】leetcode378 有序矩阵中第K小的元素
2019-04-26
【Leetcode刷题篇】前K个高频元素
2019-04-26
【Leetcode刷题篇】leetcode373 查找和最小的K对数字
2019-04-26
【Leetcode刷题篇】leetcode367 有效的完全平方数
2019-04-26
【Leetcode刷题篇】剑指offer-数值的整数次方
2019-04-26
【Leetcode刷题篇】面试题01.06 字符串压缩
2019-04-26
【Leetcode刷题篇】leetcode443 压缩字符串
2019-04-26
【面试篇】数据结构-线性表
2019-04-26
【面试篇】数据结构-树形结构
2019-04-26
【面试篇】数据结构-哈希表
2019-04-26
【Leetcode刷题篇】leetcode88 合并两个有序数组
2019-04-26
【Leetcode刷题篇】剑指offer51 数组中的逆序对
2019-04-26
【Leetcode刷题篇】剑指offer55-平衡二叉树
2019-04-26
【Leetcode刷题篇】leetcode98 判断一棵树是否为二叉搜索树
2019-04-26
Java中arraylist和数组的相互转换
2019-04-26