0

使用しているC++コードがメモリ不足エラーを引き起こすことを理解しようとしています。これは、一連のコード機能をオン/オフにするためのいくつかのフラグ変数を備えた科学的なコードです。いくつかの機能がオフになっている場合、コードは正常に機能します。ただし、これらのルーチンがアクティブな場合、「メモリ不足」の状況が発生します。

Qsubによって作成されたエラーファイル、終了ステータス:-4

1つ以上のノードでメモリが不足しているため、ジョブが終了しました。私が話している関数は、いくつか追加するまでは正常に機能していました。私は基本的にいくつかのポインタを作成し、NULLに初期化し、それに関連付けるメモリチャンクを作成し、それに関心のある量を格納し、後で[]*pを削除します。

私は問題の原因を突き止めるために一生懸命努力しています。何が原因なのか疑問に思います。C++プログラミングエラー(C ++の経験がないために見落としている)があると思います。バグが何であるかを理解する方法はありますか....それがどこにあるか、またはそれを解決する方法はありますか。

私の頭に浮かんだいくつかの考え-try{}catch {}を使用-メモリプログラムを実行して、システムのメモリ使用量を(リアルタイムで)追跡します-そのような状況でMPI /C++コードをデバッグする他の効率的な方法。

  • スタックとヒープ上の何かと、メモリの格納方法について読みました... 2D配列、1D配列をオンザフライで宣言する最も安全な方法...ポインタベースまたは配列定義ベース.. ??

あなたの考えを教えてください。

4

1 に答える 1

0

valgrindは、メモリ リークが発生している場所を示すことができるはずです。

于 2012-07-10T22:41:08.470 に答える