だから、私はいくつかの助けが必要です。私はC++でプロジェクトを進めています。しかし、私は何とかヒープを破損してしまったと思う。これは私がクラスにstd::string
を追加したという事実に基づいており、それを別のstd::string
から値代入されています。スタックダンプで自分のシステム上メモリ管理、ヒープ破損、およびC++
std::string hello = "Hello, world.\n";
/* exampleString = "Hello, world.\n" would work fine. */
exampleString = hello;
クラッシュを。だから基本的には私はを停止し、すべての私のコードとメモリ管理のものを通過し、私が犯した場所を見つける必要があります。コードベースはまだ小さく(約1000行)、これは簡単に実行できます。
それでも、私はもののこの種の私の頭の上ので、私は、私はそこにそれを投げるだろうと思っていました。私は、Linuxシステム上だとvalgrind
の周りつついていると、完全に私がやっているかわからないが、それはstd::string
のデストラクタが無効無料だったと報告しました。私は、Googleの検索から「ヒープ腐敗」という言葉を得ることを認めなければならない。この種のものに関する汎用的な記事も高く評価されます。
(rm -rf ProjectDir
前では、C#で再び実行しますD)
EDIT: 私はそれが明らかにされていませんが、私はのために求めていることの方法は、メモリの問題のこれらの並べ替えの診断助言しています。私はstd :: stringのものが正しいことを知っているので、私が行ったこと(またはバグですが、Selectで問題がありません)です。私は書いたコードをチェックすることができたと確信しています。あなたは非常に賢い人がすぐに問題を見るでしょうが、私はこの種のコード分析を私の 'ツールボックス'に追加したいと思います。
+1、良いリスト!しかし、私は#8を争うだろう - 悪いアクセスを防ぐのは間違いだが、それは実際に私の経験では貧弱なロジックやオブジェクトライフタイム管理を隠すコードの臭いだ。 – Roddy
最近、C++には標準で独自のスマートポインタがあるライブラリなので、BoostやLokiの必要はありません。 –