智能指针是一种用于帮助管理动态分配的内存的工具。在C语言中,没有原生的智能指针,但可以通过编写自定义的智能指针来实现类似的功能。智能指针可以跟踪动态分配的内存,并在不再需要时自动释放它,避免了内存泄漏和悬空指针的问题。 2. 如何使用智能指针来管理内存? 使用智能指针来管理内存可以避免手动调用malloc和free函...
1,unique_ptr的数组智能指针,没有*和->操作,但支持下标操作[] 2,shared_ptr的数组智能指针,有*和->操作,但不支持下标操作[],只能通过get()去访问数组的元素。 3,shared_ptr的数组智能指针,必须要自定义deleter 小例子 #include<iostream>#include<memory>#include<vector>using namespacestd;classtest{public:...
智能指针是通过基本类型(模板类)指针构造类的对象,指针本身就是一个自定义的对象。 当此对象被销毁时,即调用此对象的析构函数,释放此指针。 智能指针其实就是对普通指针的封装,封装成一个类。通过重载*和->两个运算符使得智能指针表现得就像普通指针一样。 智能指针遵从RAII思想。 RAII思想: 能够像指针一样(运算...
1、使用智能指针托管的对象,尽量不要在再使用原生指针 很多开发同学(包括我在内)在最开始使用智能指针的时候,对同一个对象会混用智能指针和原生指针,导致程序异常。 2、不要把一个原生指针交给多个智能指针管理 如果将一个原生指针交个多个智能指针,这些智能指针释放对象时会产生对象的多次销毁 3、尽量不要使用 get...
注意,同一普通指针不能同时为多个 shared_ptr 对象赋值,否则会导致程序发生异常。例如: 4) 在初始化 shared_ptr 智能指针时,还可以自定义所指堆内存的释放规则,这样当堆内存的引用计数为 0 时,会优先调用我们自定义的释放规则。 在某些场景中,自定义释放规则是很有必要的。比如,对于申请的动态数组来说,shared_pt...
1.智能指针 C++中四种常见的指针:unique_ptr,shared_ptr,weak_ptr,以及C++中已经废弃的auto_ptr。 下面我们根据对象所有权以及对象生命周期分别对这4类进行讲解: 1.auto_ptr auto_ptr要求同时只能有一个指针指向同一个对象,如果有另外一个指针引用了对象,则当前指针引用会被强制抹除置为null_ptr。 模型如下: 案...
c/c++ 智能指针 unique_ptr 使用 智能指针 unique_ptr 使用 和shared_ptr不同,可以有多个shared_ptr指向同一个内存,只能有1个unique_ptr指向某个内存。因此unique_ptr不支持普通的拷贝和赋值。 一,先来个表格,唠唠unique_ptr 小例子索引 小例子 include <iostream>#include<memory>#include<vector>using name...
内存管理的优化:我们可以通过合理的内存管理来提高性能。例如,我们可以使用智能指针来自动管理内存,避免内存泄漏。 并发编程的优化:如果我们的代码需要处理大量的音频文件,那么我们可以使用多线程或异步编程来提高性能。 这只是一个简单的例子,但是它展示了如何在实际编程中设计和优化自定义数据结构。在实际编程 ...
unique_ptr的产生,就是为了解决,raw pointer 的new和delete配对使用问题。对于raw pointer来说,在new...
说下你对智能指针的理解 因为C++使用内存的时候很容易出现野指针、悬空指针、内存泄露的问题。所以C++11引入了智能指针来管理内存。有四种: auto_ptr:已经不用了 unique_ptr:独占式指针,同一时刻只能有一个指针指向同一个对象 shared_ptr:共享式指针,同一时刻可以有多个指针指向同一个对象 ...