Visual Studio C++ で std::bad_alloc対策

std::bad_allocとは

std::bad_allocが出た場合、ヒープ領域が足りていないことを意味しています。
ではヒープ領域とはなにかというとnewallocでメモリを動的に確保する際に使用されます。

例えばマルチスレッドで大きい画像を解析しようとしたりすると発生することがあります。
Visual Studio ではデフォルトで1MBが割り当てられています。

回避策

これを設定変更するにはソリューションプロパティでヒープ領域を設定することができます。

また、プリプロセッサを追加することでも回避出来ます。
以下のコードは例としてHEAPとSTACKに5MBを割り当ててみます。

#pragma comment(linker, "/HEAP:5242880")
#pragma comment(linker, "/STACK:5242880")

しかし、マルチスレッド上ではヒープを多く使うことは競合が発生し、遅延が発生する可能性があります。
これについてMicrosoftが詳しい資料が用意されているので、そちらを読んでみることを勧めます。

ヒープ : 喜びと苦悩