首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

try.catch有关问题

2012-05-05 
try..catch问题用try捕捉到错误后程序跳到了catch运行而我在try块动态分配了数个变量到了catch块后这些变

try..catch问题
用try捕捉到错误后
程序跳到了catch运行
而我在try块动态分配了数个变量
到了catch块后这些变量动态分配出来的变量应该不会自动释放吧?
可那时我已经不在那个指针的作用域了,不能用delete释放了
请问要怎么处理??

[解决办法]
在try开始前声明一次.函数结束释放空间。
[解决办法]
try{

int *pi=new int();
auto_ptr<int> ap=pi;

}catch(...)
{}
[解决办法]
将定义放在try...catch外面,在catch中删掉
int *pi;
try{
pi = new int();
auto_ptr<int> ap=pi;
}catch(...)
{
delete pi;
}
[解决办法]
如果不需要考虑节省内存,可以不用动态申请。
试试全局分配。
如果需要很多个指针,可以用指针数组。
那样释放的时候一个for就可以解决了。

探讨

引用:

将定义放在try...catch外面,在catch中删掉
int *pi;
try{
pi = new int();
auto_ptr<int> ap=pi;
}catch(...)
{
delete pi;
}


可是try中好多动态分配,这样每一个都要定义在外面了?
还有没其他好一点的方法?

[解决办法]
不太清楚哦,不过你可以在那个类的析构函数里面加上一句cout,显示一点信息
然后故意分配一个很大的内存引发异常,看看会不会显示出信息。
如果显示的话说明析构函数执行了,那么内存也释放了。
[解决办法]
把要new的指针放在try前面,不要被try包含,catch里判断是否非零,不是则delete

热点排行
Bad Request.