Мое понимание стека исключений в стеке-это то, что модификации на массив будут «как, если» они никогда не возникали: < /p>
#include
#include
#include
#include
int main() {
std::array foo = {};// zero-initialize
try {
std::fill_n(begin(foo), 10, 1);// assign all ones
throw std::runtime_error("intentional");
}
catch (const std::exception&) {
}
std::cout
Я прав в этом; Обнаружение стека гарантирует переменную «foo» - это все нули после блока улова? Чтобы отменить модификации на «Foo», потребует либо резервную копию в памяти, либо некоторые реальные трюки на выполнение, чтобы восстановить его исходное состояние.
Подробнее здесь: https://stackoverflow.com/questions/796 ... erformance