首页 新闻 会员 周边

c++抛出异常会不会引起内存泄露?非构造函数

0
悬赏园豆:10 [已解决问题] 解决于 2015-06-10 14:35
void func(void) {
    try {
        int *a = new int [10];
        int *b = new int[1000000000];
        delete []a;
    } catch {
        ...
    }
}

b 分配失败会不会导致 a 无法释放?

努力变瘦的主页 努力变瘦 | 菜鸟二级 | 园豆:243
提问于:2015-06-10 14:16
< >
分享
最佳答案
0

会。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2015-06-10 14:20

那怎么写才能正确处理?

努力变瘦 | 园豆:243 (菜鸟二级) | 2015-06-10 14:24

@yajunw: 用 SEH 异常处理机制。

int *a = NULL;

int *b = NULL:

__try

{

    a = new int[10];

    b = new int[10000000000000];
}

__finally

{

   if(a != NULL)

    {

        delete a;

        a = NULL;
    }
}

Launcher | 园豆:45045 (高人七级) | 2015-06-10 14:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册