Memory management 内存分配失败,没有std::bad_alloc

Memory management 内存分配失败,没有std::bad_alloc,memory-management,crash,c++17,bad-alloc,Memory Management,Crash,C++17,Bad Alloc,考虑这两种情况,II和JJ足够大 // std::bad_alloc new int[II*JJ]; 及 //崩溃! 用于(尺寸ii=0;ii

考虑这两种情况,
II
JJ
足够大

// std::bad_alloc
new int[II*JJ];

//崩溃!
用于(尺寸ii=0;ii
所以第一个抛出
std::bad_alloc
,而第二个崩溃!这对我来说是很意外的


gcc-7.2.0
上测试。这是一个BUG吗?

请记住,分配的内存需要是连续的。如果没有可用的内存块,分配一大块内存将立即失败。分配多个较小的区域将导致碎片和非常不同的用例。还要注意,这更多地依赖于系统,而不是依赖于编译器。而且你没有提到操作系统或它的版本。
// CRASH!
for (size_t ii = 0; ii < II; ++ii)
  new int[JJ];