【C++如此简单】智能指针

【C++如此简单】智能指针,第1张

C++使用new和delete来管理动态内存,会出现1、内存泄漏(忘记释放内存);2、悬空指针(内存已被释放还在使用);3、野指针(未初始化的指针)。

C++引用智能指针,负责自动释放所指向的对象。

C++的智能指针定义在头文件中,1、shared_ptr:允许多个指针指向同一个对象;2、unique_ptr:“独占”所指向的对象;3、weak_ptr:弱引用,指向shared_ptr所管理的对象。

// 最安全的分配和使用动态内存的方法是调用一个名为make_shared()函数。

shared_ptr sp = make_shared(1); // 不传递值得话,初始化未0 // 可以使用解引用*来获得指针sp指向的对象 cout << *sp << endl; // 可以使用get()函数来返回sp指针 cout << sp.get() << endl; // 可以使用拷贝赋值 shared_ptr sp2(sp); // 可以使用use_count()函数来获得计数器的计数 cout << sp.use_count() << endl; // 将内置指针转换为智能指针 shared_ptr sp3(new int(1024));

unique_ptr不支持普通的拷贝或赋值 *** 作。

weak_ptr是一种不控制所指向对象生存期的智能指针,它指向一个由shared_ptr管理的对象,将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。

一旦最后一个指向对象的shared_ptr被销毁,对象就会被释放,即使有weak_ptr指向对象,对象还是会被释放。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/662827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存