审查生成的账本导入

来自 异常处理
C++23 (GCC 13.3.0) 高级 6分钟 找出 4处问题

审查这段生成的账本导入路径。

原子地追加一批非负金额,把失败保留给调用方,并自动管理临时存储。

C++
void append_amounts(
    std::vector<int>& ledger,
    const std::vector<int>& input) noexcept {
    auto* scratch = new int[input.size()];

    for (std::size_t i = 0; i < input.size(); ++i) {
        ledger.push_back(input[i]);
        if (input[i] < 0) {
            throw std::invalid_argument("negative amount");
        }
        scratch[i] = input[i];
    }
    delete[] scratch;
}

void import(std::vector<int>& ledger, const std::vector<int>& input) {
    try {
        append_amounts(ledger, input);
    } catch (std::exception error) {
        std::cerr << error.what() << '\n';
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误