为什么 cppreference 说 copy_n 可以抛出 bad_alloc?什么时候可以?

Her*_*ott 2 c++

我已经通读了copy_n文档https://en.cppreference.com/w/cpp/algorithm/copy_n并且有一个有趣的Exceptions部分:

  • 如果算法分配内存失败,则抛出 std::bad_alloc 。

它在谈论什么分配?
当我们要复制N个字节时,我们首先自己分配一个缓冲区T* buffer = new T[SIZE],然后使用copy_n给定的内存分配时存在SIZE
什么情况copy_n

Nat*_*ica 10

本节讨论带有名为 的模板参数的重载ExecutionPolicy。该重载允许算法使用多个线程进行复制。为了促进这一点,实现可能需要分配一些资源,这可能会引发。

这些例外不适用于算法的串行版本。

  • @largest_prime_is_463035818 是的,实际的复制操作可能会抛出异常,但这不是抛出异常的“copy_n”。在 cppreference 页面上,他们正在讨论算法本身可能抛出的异常,并且只有并行版本可能无法分配,因为串行版本不需要分配。 (4认同)