锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源 / 帮助理解C++11指针ptr类进行思维过渡
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
量化预测
股票离线分析软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。点名“简易百科”和闲暇巴盗用锐英源原创内容


帮助理解C++11指针ptr类进行思维过渡


C++11为了解决auto_ptr的问题,引入了新类shared_ptr、unique_ptr和weak_ptr,目的是好的,但是理解和使用起来很麻烦,需要脑子转几个弯,这里说明几个知识点帮大家理解,辅导把弯转过来,进行思维过渡。

指针和内存释放问题密切相关,比如普通指针用delete可以释放,数组指针就要用delete[]来释放,C++11引入的指针ptr类也是为了帮助容易释放,在内存释放上,基本C++范畴里,数组指针的释放就要格外注意有麻烦点,更不用说新标准里的高级指针了。

相当于旧的也很麻烦,不要抱怨新标准的麻烦。新标准为了安全引入了类属性,简单指针变成了类,肯定麻烦。

至于数组指针要用delete[]释放的意思是指:指针在C++管理时,C++是不知道是简单指针还是数组指针,这需要程序员自己来维护,程序员自己维护错了,内存就泄露了。

所有新标准引入了指针Ptr相关类。

另外一个内存容易泄漏的地方是类的析构函数没有虚化,在基类没有虚化时,用基类指针分配内存,指向派生类,然后再delete 基类指针,这时候只释放了基类部分内存,派生类的哪部分内存没有释放。

归根结底问题是在C++对指针的属性没有管理,不知道指针的相关信息,所以析构时就出错了。当然如果析构函数在基类就虚化了,析构函数会根据分配时的类型进行释放,就不会出错了。

很多初学者如果连C语言、计算机组成和操作系统都没有学,想理解我上面说的话更难。如果觉得难,就强记吧。

友情链接
版权所有 Copyright(c)2004-2024 锐英源软件
统一社会信用代码:91410105098562502G 豫ICP备08007559号 最佳分辨率 1440*900
地址:郑州市金水区文化路97号郑州大学北区院内南门附近