私はC++で例外を学習していて、これを試していました。
int main(int argc, char* argv[]) {
double *p_x;
try {
p_x = new double[100000000000000];
delete p_x;
} catch (bad_alloc& ex) {
cout << "Memory not allocated !!\n";
}
return 0;
}
例外はキャッチされますが、このコードを実行すると他のものが出力されます。出力は次のようになります。
Memory not allocated !!
Test9(13814) malloc: *** mmap(size=800000000000000) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
どういうわけかg++のバージョンに関連しているのか、OS Xに関連しているのかわかりません。つまり、プログラムは例外をキャッチしていますが、他のことは何ですか?