在C++中,动态内存的管理是通过一对运算符来完成的:new
,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化;`delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。
动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的。有时我们会忘记释放内存,在这种情况下就会产生内存泄漏;有时在尚有指针的引用内存的情况下我们就释放了它,在这种情况下就会产生引用非法内存的指针,也就是野指针。
为了更容易(同时也更安全)地使用动态内存,C++提供了四种智能指针(smart pointer)类型来管理动态对象,分别是auto_ptr
,unique_ptr
,shared_ptr
和weak_ptr
。其中auto_ptr
是C++98提供的解决方案,C+11已将将其摒弃。
回头整理一下
好文章:
https://www.nowcoder.com/tutorial/93/a34ed23d58b84da3a707c70371f59c21
https://www.cnblogs.com/lanxuezaipiao/p/4132096.html