智能指针 悠悠 2022-03-18 11:54 383阅读 0赞 ## 智能指针 ## * 在java中如果在堆上开辟内存是不需要手动释放的,我们叫做智能指针;但是在C++中如果用new在堆上开辟了空间,我们需要用delete进行手动释放,否则造成内存泄露。 * 在C++中,已提供基于模板的智能指针操作,通过\#include<memory>: auto_ptr<int> ptr(new int); // int* ptr= new int; auto\_ptr其实是一个类, ptr定义了一个对象 * 智能指针的实现: class A { public: A(int a) { this->m_a = a; cout << "A()" << endl; } void Print() { cout << "a: " << m_a << endl; } ~A() { cout << "~A()" << endl; } private: int m_a; }; template<class TYPE_> class Auto_Ptr { public: Auto_Ptr(TYPE_* ptr) { m_ptr = ptr; } TYPE_* operator->() { return m_ptr; } TYPE_& operator*() { return *m_ptr; } ~Auto_Ptr() { if (m_ptr != NULL) { delete m_ptr; m_ptr = NULL; } } private: TYPE_* m_ptr; }; int main() { Auto_Ptr<A> my_ptr = new A(10); my_ptr->Print(); // my_ptr.m_ptr ->Print(); (*my_ptr).Print(); //(*my_ptr.m_ptr)->Print(); } //main函数结束将自动触发 A的析构,不需要手动释放 ## 待写 ## ### share\_ptr ### ### weak\_ptr ### ### xxxx ###
相关 智能指针 C++里面的四个智能指针分别是:auto\_ptr,shared\_ptr,weak\_ptr,unique\_ptr,其中后三个是C++11支持的,第一个auto\_ptr已 客官°小女子只卖身不卖艺/ 2023年10月09日 12:14/ 0 赞/ 155 阅读
相关 智能指针 智能指针 1.引入使用计数 定义智能指针的通用技术是采用一个使用计数。智能指针将一个计数器与类指向的对象相关联。使用计数跟踪该类有多少个对象共享同一指针。使用计数为0时 Bertha 。/ 2023年06月23日 15:29/ 0 赞/ 109 阅读
相关 智能指针 智能指针 智能指针的智能,体现在智能指针能够在每次完成工作之后自动释放占用的空间。 我们通常使用的裸指针,使用完成后需要通过delete或者free来进行释放,那么如 向右看齐/ 2023年06月21日 03:46/ 0 赞/ 42 阅读
相关 智能指针 有三个智能指针,auto\_ptr(弃用)、unique\_ptr、shared\_ptr. 智能指针可以自动跟踪动态内存,在其过期时自动释放。 include< ゝ一纸荒年。/ 2023年02月21日 14:05/ 0 赞/ 142 阅读
相关 智能指针 class MyClass { public: MyClass(int a){}; ~MyClass() 逃离我推掉我的手/ 2023年01月03日 12:54/ 0 赞/ 280 阅读
相关 c++ 智能指针 前言 C++里面的四个智能指针: auto\_ptr, unique\_ptr,shared\_ptr, weak\_ptr 其中后三个是C++11支持,并且第一个已经被 左手的ㄟ右手/ 2022年09月07日 12:15/ 0 赞/ 371 阅读
相关 智能指针 scoped\_ptr解析 《超越C++标准库-Boost库导论》 头文件: "boost/scoped\_ptr.hpp" boost::scoped\_ptr 用于确 超、凢脫俗/ 2022年08月09日 16:37/ 0 赞/ 350 阅读
相关 智能指针 RAII(Resource Acquisition Is Initialization): 资源分配即初始化,定义封装一个类,用来实现调用构造函数时就可完成资源的分 梦里梦外;/ 2022年07月17日 03:43/ 0 赞/ 320 阅读
相关 智能指针 在C++中,如果指针使用不当,比如没有及时释放指针所指向的内存,或者野指针等,会造成系统发生不可预估的错误,为了防止这一情况的发生,C++ STL提供了一系列智能指针类型 智 偏执的太偏执、/ 2022年05月17日 07:29/ 0 赞/ 359 阅读
相关 智能指针 智能指针 在java中如果在堆上开辟内存是不需要手动释放的,我们叫做智能指针;但是在C++中如果用new在堆上开辟了空间,我们需要用delete进行手动释放,否则造 悠悠/ 2022年03月18日 11:54/ 0 赞/ 384 阅读
还没有评论,来说两句吧...