/ *
* \ 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
。我真的不是专家。用这个方法怎么做?
如果您的代码正在使用运算符new
(或任何使用运算符new
的东西,如标准库)分配内存,那么如果内存不足,它应该已经抛出std::bad_alloc
。
编辑:如果它使用的是C风格的内存管理(malloc
和friends),我不认为它是这样的,因为您是从std::ifstream
而不是像C中那样从文件*
构造对象的,那么您应该检查malloc
是否返回了nullptr
(即分配给malloc
的调用的指针为null),如果是,则抛出std::bad_alloc
。如果由于某种原因您不能这样做,您可以#包含
并检查errno==enomem
,尽管这并不完全是万无一失的,因为malloc
不能保证在失败时设置errno
。