智能指针
43.C++中的智能指针是什么?❤️
C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,C++11中引入了智能指针的概念,使用智能指针能更好的管理堆内存。
**原理:**智能指针是一种类模板,用来存储指针(指向动态分配对象的指针)。智能指针通过使用引用计数技术来跟踪一个指针被多少个其他指针共享,这样当没有任何指针引用某个对象时,就可以自动释放该对象所占用的内存。
**作用:**它用于自动管理内存,以避免常见的空指针、悬垂指针和内存泄漏问题。还可以提高代码的可读性和可维护性。
44.智能指针的实现
手写实现智能指针类需要实现哪些函数?
智能指针是一个数据类型,一般用模板实现,模拟指针行为的同时还提供自动垃圾回收机制。
除了指针对象外,我们还需要一个引用计数的指针设定对象的值,并将引用计数计为1,需要一个构造函数。新增对象还需要一个构造函数,析构函数负责引用计数减少和释放内存。
通过覆写赋值运算符,才能将一个旧的智能指针赋值给另一个指针,同时旧的引用计数减1

本文介绍了C++中的智能指针,包括其原理、作用和常见类型如shared_ptr、unique_ptr、weak_ptr。智能指针通过引用计数自动管理内存,防止内存泄漏和空指针问题。文章还探讨了智能指针的循环引用问题及其解决方案,并提到了使用RAII原则管理资源的重要性。此外,还讨论了指针占用的内存大小和指针加减运算的注意事项。
订阅专栏 解锁全文
2276

被折叠的 条评论
为什么被折叠?



