RAII[VC/C++编程]
本文“RAII[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于资源,这里我分为两类:
1. 内存资源
2. 非内存资源(文件、网络资源等)
C++ 关于内存资源的管理部份是自动的:栈上的内存资源将被自动释放,堆上的内存资源需求程序员自己释放.
手动管理内存资源,总会让我们在一些极度情形下出错.一个最简单,最常见的例子以下:
void f()
{
A* a = new A();
B* b = new B();
C* c = new C();
// ...
if (某种条件)
{
// 失利时
delete a;
delete b;
delete c;
// ...
return;
}
// 成功持续处理
Z* z = new Z();
try
{
f2(); // f2 大概抛出非常
} catch (const xxx&) {
delete a;
delete b;
delete c;
// 忘掉释放 z
}
// 没有非常持续处理
}
不管是多么优异的程序员,他也不能保证永久精确的释放了内存资源,碰见上面情形的办理办法之一就是利用 autoptr,我们可以这样写:
void f()
{
autoptr<A> a(new A());
autoptr<B> b(new B());
autoptr<C> c(new C());
// ...
if (某种条件)
{
// 失利时,无需释放资源
return;
}
// 成功持续处理
autoptr<Z> z(new Z());
try
{
f2(); // f2 大概抛出非常
} catch (const xxx&) {
// 无需释放资源
}
// 没有非常持续处理
}
以上是“RAII[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:Keil C51 vs 尺度C
- ·下一篇文章:<b>在利用程序中掌握Word 97的运行</b>
- ·中查找“RAII”更多相关内容
- ·中查找“RAII”更多相关内容