BRa*_*t27 3 c c++ assert memory-management
假设我们有一个程序,我们分配一些内存,然后我们有一些断言声明.如果assert语句抛出错误,分配的内存会发生什么?在停止程序之前它是免费的吗?
Ani*_*han 8
assert失败时,将错误写入stderr并调用abort().与exit()不同的是,它不执行用atexit()注册的函数,也不调用析构函数.
assert
因此,您的析构函数,清理代码等都不能被调用.所以由操作系统来决定,因为在" 意外 "终止之前,程序没有释放内存.
这可能是设计的,因为调用析构函数可能会导致一些进一步的错误.它终止于失败的断言,不再执行代码.
归档时间:
13 年,2 月 前
查看次数:
1193 次
最近记录:
8 年,8 月 前