最近做了个项目,比较复杂,想用智能指针来管理内存。网上资料很少,自己研究了一把Loki SmartPtr
Loki的安装
1,下载源码,当前最新版是loki-0.1.7,解压缩。
2,将src目录下的工程编译链接,生产的静态库在lib目录下
3,为了方便,将loki的include目录加入工程包含目录
设置环境变量入LOKI_ROOT=D:/loki-0.1.7/
VS中,工具->选项->项目和解决方案->VC++目录,在 ‘显示以下内容目录’ 下拉到 ‘包含文件’,添加 $(LOKI_ROOT)
4,将静态库置于可搜索路径下,有两种方法,一是将lib目录加入Path路径下,二是直接将lib拷贝到工程项目下。
安装完成。
SmartPtr的使用:
先上代码
CTest.h
main.c
代码中使用的是默认模板。
注意事项:
注意第4个Checking 策略模板,默认是AssertCheck,也就是只有调试期生效,Release版就不会检查有效性。
解释一下Loki的Checking 策略模板:
AssertCheck,默认,使用assert,在取值时检查。
AssertCheckStrict,使用assert,在初始化时检查。使用这种方式就不能将其定义成成员变量除非显示赋初值。
RejectNullStatic,使用SmartPtr的默认构造函数就会产生编译期错误。
RejectNull,取值每个为NULL,爆异常。
RejectNullStrict,不允许NULL为初值,否则爆异常。
NoCheck,无为模板,不做检查。