一、使用方法:
1、 将shared_ptr.hpp,shared_ptr.cpp加入 到项目工程中;
2、 如果不需要支持多线程,可以在 "shared_ptr.hpp"文件最开始处定义:
#define SHARED_PTR_SINGLETHREAD;
3、 在使用前: using namespace YDSH_PTR;
4、 shared_ptr<classtype> p=new(ydsh,(classtype*)0) classtype;其中,classtype为类类型;
5、 也可以直接管理数组类指针,如:shared_ptr<classtype> p=new(ydsh,(classtype*)0) classtype[5]; p[2]=....;
二、特点:
1、 线程安全;
2、 可以解环引用;
3、 内存可以立即释放,无需像JAVA等垃圾回收器在回收时挂起工作线程;
4、 可以管理用new分配的内存块中的部分内存空间,即可以替代C++引用,并且保证内存正常释放,如:
class A{};
class B{public: A a;};
shared_ptr<B> pb=new(ydsh,(B*)0) B;
shared_ptr<A> pa=&pb->a;
5、 可以同时管理数组类指针;
三、 缺点:
1、 分配小内存数据时,内存浪费较大;
2、 new使用方法上不太标准,如:shared_ptr<B> pb=new(ydsh,(B*)0) B;