共有ライブラリを含むアルゴリズムのC実装があります。共有ライブラリのパフォーマンスは、CとC ++ではかなり異なります(C ++でははるかに優れています)。そのため、C実装( Imp-1 )の共有ライブラリ部分をC ++(Imp-2)に変更し、残りの部分は同じままにしました。Linuxでgccとg++を使用して、それぞれImp-1とImp-2をコンパイルしました。小さなサイズの問題では、Imp-1とImp-2の両方がまったく同じように動作します。ただし、同じ大きなサイズの問題では、Imp-1が問題なく解決するのに対し、Imp-2はstd::bad_allocを返します。エラー。興味深いことに、このエラーは、メモリ使用量が4GBに増加し、使用可能なメモリが35GBの場合に発生します。
なぜこのエラーが発生するのですか?(コンパイラ、オペレーティングシステム、コンパイラオプションなど)
よろしくお願いします。