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就可以解决了。