bod*_*ydo 4 c++ memory constructor allocation return
我刚遇到一个问题,其中类的构造函数需要分配内存.所以我高兴地写道char *mem = static_cast<char*>(malloc(100*sizeof(*mem)));.但后来我突然意识到,如果出现错误,我无法返回错误代码(我的代码中没有使用异常).我怎么解决这个问题?
我应该添加一个bool initialized成员然后在上课后然后立即检查,如:
myClass mc;
if (!mc.initialized) {
printf("Memory allocation failed in mc's constructor\n");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
谢谢,Boda Cydo.
你应该使用new,而不是malloc.当你内存不足时,新抛出std :: bad_alloc.如果您未能分配(或由于任何其他原因导致初始化问题),则应从构造函数传播异常,因为这是阻止析构函数被调用的唯一方法.如果构造函数成功完成,则必须调用析构函数(当然,除非它已分配堆并且从未释放).
| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |