【发布时间】:2018-05-03 14:01:01
【问题描述】:
由于我已经读过向量中的每个元素都是在堆上创建的,我想知道您是否需要检查堆上是否有足够的内存,或者如果没有足够的可用空间会发生什么?
例如,这样的事情甚至有必要吗?:
try {
std::vector<T> map;
map.pushback(t);
} catch (const std::bad_alloc& e) {
std::cout << "Allocation failed: " << e.what() << '\n';
}
【问题讨论】:
-
您并没有真正处理异常。假设操作成功,以下代码将继续执行。在不放弃您最终尝试执行的任何操作的情况下,很难处理
std::bad_alloc。如果你想处理std::bad_alloc,你通常会希望远离故障点,在那里可以做一些有意义的事情。
标签: c++ vector heap-memory