2017-02-03 8 views
0

私は昨日から質問への解決策を提出しようとしていますが、それでもなお無駄です。より大きなテストケースではランタイムエラーが発生します。このランタイムエラーについて調査したところ、それは過度のメモリを使用していることが原因であることがわかりました。私はサイズ<=10^6の配列と<=10^12整数のペアのベクトルを持っています。これはスタックオーバーフローを引き起こしますか?特にベクトルの場合は? PS:私はC++ STLを何度も使用しましたが、これらの制限でメモリオーバーフローに直面しませんでした。いつSIGABRTランタイムエラーが発生し、そのような場合にデバッグするのですか?

+4

* "<= 10^12の整数のベクトル" *これは最大8TBのメモリです。アルゴリズムを改善する必要があります。 (または、そのような種類のRAMを持っているコンピュータを借りてください、それはほとんどの場合、練習のポイントではありません;)) –

+0

10^12の整数は4000GBです。 – Leandros

+0

[プロセスはいつSIGABRT(シグナル6)を取得しますか?](http://stackoverflow.com/questions/3413166/when-does-a-process-get-sigabrt-signal-6) –

答えて

0

ほとんどの場合、システムには> 8TBの仮想メモリがあり、std::bad_allocがスローされている場合を除き、メモリが不足している可能性があります。未処理の例外により、terminate()への呼び出しが発生し、abort()が呼び出されます。そして、あなたは、スタックトレースを参照してくださいbtを入力することができます

Program received signal SIGABRT, Aborted. 

あなたが本当にこれをデバッグしたい場合は、gdbの下でプログラムを実行して、あなたのようなものが表示されるはずです。

関連する問題