考虑以下情况:
如果1,new失败的话,不但互斥锁mutex永远无法释放,而且会导致bgImage指向的内容无效,破坏了数据。
Mutex mutex; // for lock
void fun() {
lock(&mutex);//取得互斥器
bgImage = new Image();//1
unlock(&mutex);//释放互斥器
}
//如果1,new失败的话会引发两个问题
使用以下方法,其实是条款13和14主张的内容:对象资源管理,会自动释放。Lock的构造函数回去拿到锁,在析构函数中会去释放。
Mutex mutex; // for lock
void fun() {
Lock m1(&mutex);
bgImage = new Image();//1
}
待补充其它细节
版权声明:本文为u010173306原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。