在此代码中,如果if
子句为true,则从CurrentAccount
构造函数抛出异常:
void Bank::createAccount(string accountType,int iban,int ownerid,double amount)
{
Account* toAddAccount=nullptr;
if(accountType=="CurrentAccount")
{
toAddAccount=new CurrentAccount(iban,ownerid,amount);
}
}
正如您所看到的,异常未在此方法中捕获,但在堆栈中被提升为更高。
我想知道,因为我不删除toAddAccount
会导致内存泄漏(CurrentAccount
构造函数仅适用于int)吗?
答案 0 :(得分:3)
这不是泄漏因为"新表达"如果在执行期间抛出异常,则负责清理。换句话说,"新表达"分配内存,然后调用Route::get('/login', 'UsersController@login')->name('login');
的构造函数。如果此构造函数抛出"新表达式"自动释放先前分配的内存。
答案 1 :(得分:0)
我认为这个问题已经得到解答,但在构建对象时应该使用RAII。具体而言(已经多次指出)是使用spring.cloud.stream.bindings
(和@RefreshScope
,具体取决于您的标准。)
std::unique_ptr