提问者:小点点

如果内存不足,则抛出bad_alloc


/ *
* \ brief Dictionary builder from file
*
* \ pre There is enough memory
* \ pre The file is first opened
*
* \ post If the file is open, the class instance has been initialized from
* from the dictionary file. Otherwise, we generate an empty class.
*
* \ exception bad_alloc if there is not enough memory
* This method calls chargeDicSyn!
* /
DicSyn::DicSyn(std::ifstream &file):
root(0), nbRadicals(0), groupesSynonymes()
{
    chargeDicSyn(file);
}

如果内存不足,我必须抛出异常bad_alloc。我真的不是专家。用这个方法怎么做?


共1个答案

匿名用户

如果您的代码正在使用运算符new(或任何使用运算符new的东西,如标准库)分配内存,那么如果内存不足,它应该已经抛出std::bad_alloc

编辑:如果它使用的是C风格的内存管理(malloc和friends),我不认为它是这样的,因为您是从std::ifstream而不是像C中那样从文件*构造对象的,那么您应该检查malloc是否返回了nullptr(即分配给malloc的调用的指针为null),如果是,则抛出std::bad_alloc。如果由于某种原因您不能这样做,您可以#包含并检查errno==enomem,尽管这并不完全是万无一失的,因为malloc不能保证在失败时设置errno