Jee*_*eet 9 c++ error-handling
一种是使用C++异常:尝试catch块.但是,当引发异常时,释放动态内存将成为一个问题.
第二种是使用C风格:errno变量
第三个是在错误时返回-1,在成功时返回0 :)
应该选择哪种方式进行中型项目?为什么?还有其他更好的方法..?
GMa*_*ckG 28
但是,当引发异常时,释放动态内存将成为一个问题.
不,这不对.std::vector<int> v(100);完成.
这里的概念称为范围限制资源管理(SBRM),也称为更常见(和笨拙)名称资源获取初始化(RAII).基本上,所有资源都包含在一些对象中,该对象将清理析构函数中的资源(始终保证为自动分配的对象运行).因此,无论函数是正常存在还是通过异常存在,都会运行析构函数并清理您的资源.
永远不要在需要明确释放它的地方进行分配,使用容器和智能指针.