-5

プログラムを終了すると、「glibcが検出されました」というメッセージが次のように表示されます。しかし、これがエラーや警告などであるかどうかはわかりません。誰かがこのメッセージの意味と私がしなければならない方法を説明できますか?

ここに画像の説明を入力してください

4

3 に答える 3

8

これは、プログラムでヒープが破損していることを意味します。を使用してメモリを割り当てる可能性がありますmallocが、実際の境界外に書き込むと、ヒープが破損します。を呼び出すとfree、glibc は破損を検出して報告します (具体的には、次の空きチャンクのサイズが上書きされます)。

この問題は必ず修正する必要があります。 Valgrindは、実際にヒープの破損を引き起こしているコードを突き止めるのに非常に役立ちます。

于 2012-06-02T18:53:02.700 に答える
4

プログラムのどこかでヒープが壊れています。reallocおよびを使用して取得した外部メモリに書き込んだ可能性がありmallocます。しかし、メモリを解放しようとすると、mallocedメモリは解放されましたが、範囲外に書き込んだメモリも解放されませんでした。これにより、破損エラーが発生します。次のようないくつかのツールがあります。Windowsのデバッグ、electricfencedmallocvalgrind。また、ループ内で境界または制限が適切にチェックされていないために単純while loopまたは aがエラーを引き起こしている可能性があるため、ループをチェックインすることをお勧めします。for loop

于 2012-06-02T19:08:45.183 に答える
3

ヒープを破損したため、メモリ管理に関してどこかで間違いを犯しました。そのようなエラーを見つけて修正するには、Valgrindのようなツールを使用してください。

于 2012-06-02T18:55:09.240 に答える