VS2010を使用しています。
複数人で同じプロジェクトを編集しています。
いつからか「Detected memory leaks!」が多発するようになり、Dumping Objectsの結果からいくつかは修正できたのですが、
----------------------------------------
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {34985} normal block at 0x05ECE620, 104 bytes long.
Data: < }R+ + > 84 CF 7D 52 2B 00 00 00 2B 00 00 00 01 00 00 00
----------------------------------------
上記の内容だけは意味がわかりません。
他の回答に「_CrtDumpMemoryLeaks」の実行場所をできるだけ後にするというようなことで対策できたようですが、このプロジェクトでは、記述していません。(明示的には実行していない)
何か、何かアドバイスをいただけたら助かります。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
初めまして。
ゲーム業界でメインPGやっている者です。プログラマ歴は10年位です。エラーメッセージから推測するに、CRTデバッガが吐き出すリーク検知時のメッセージでしょうか。
(メモリアロケータ等は自作でCRT等のツールは使った事無いので分かりませんが・・)
コードが無いので何とも言えませんが、そのメッセージ自体は調べたところ、
MFCのstrcore.cpp156行目の処理によるエラーで34985回目のメモリ確保時に出ている様です。
(3万回以上経ってなら、大方のリークは潰した後の小さなリークの累積なんでしょうね。骨が折れている事と思います)
その際のメモリ確保はヒープ上の0x05ECE620と言うアドレスから始まっていますが、104バイトのメモリブロックが未解放。
(解放していないメモリブロック上に確保をかけて失敗している)
そして、その失敗しているメモリブロックの中身は、}R+ + となっている。
その}R+ + をバイナリとして表すと、84 CF 7D 52 2B 00 00 00 2B 00 00 00 01 00 00 00
と言うのが直訳した結果です。
VC上のIDEであればヒープ位置は変わらないと記憶しているので、
・0x05ECE620と言う数値が何度実行しても変わらないのであればそのアドレスが変更された際にブレークをかける
・104バイト確保と言う事なので、そのサイズの構造体やクラスに心当たりが無いか考える
・使用している実値データに84 CF 7D 52 2B 00 00 00 2B 00 00 00 01 00 00 00が無いか
・MFCのstrcore.cppが見えるなら156行目にブレークを貼ってコールスタックを追う。
等から追跡して、そのデータの確保タイミングを見つける位は出来るかも知れません。
この手の事例は単に生成順と解放順が管理されていない事による不整合が大半だと思います。
綺麗にクラス化された設計なら、該当しそうなオブジェクトのデストラクタと、新オブジェクトのコンストラクタにトレースなりブレークを貼って、順番のおかしい箇所を探すのが、地味で手間に見えますが確実です。
リークは大変ですよね。
起きた際の事後解決能力も必要ですが、起こさない為の工夫も、考えると山ほどあります。
是非がんばって下さい。
お礼が遅れ、申し訳ありません。
丁寧な回答ありがとうございます。
アドバイスいただいた内容をもとに、リーク箇所を探してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) M365環境での動作エラー、及び対応相談 1 2023/01/27 04:18
- 英語 総称的意味の「the+過去分詞」が無冠詞複数形で置き換えることができない理由について 5 2022/08/04 10:14
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 転職 施工管理の転職について 質問内容 求人に、正社員とはっきり明記している施工管理の求人について。 おお 1 2023/01/01 07:24
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 大学院 修士論文の過ちを報告した際 2 2023/03/30 20:55
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
"判定"の英語表現について
-
ライブチャットのオンライン状況
-
i-padアプリ「バトルネイション...
-
大腿骨の骨梁
-
アクションスクリプト3.0を...
-
DBマジック
-
これまで、独学でイラストレー...
-
TDSマジックランプシアター 箱...
-
CapCutで、人の目からビームを...
-
VLCの再生時の色がおかしく...
-
リコーダーのドがかすれてでま...
-
エクセルVBA テキストボックス...
-
エッジ
-
【至急】フォトショップの「自...
-
ドアスコープ、内側から覗いて...
-
どこにもフォーカスを当てたくない
-
油性マジックの落とし方につい...
-
クラリスインパクトのファイル...
-
他の人には声だして挨拶してる...
-
炊飯器のセットの音と出来上が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
"判定"の英語表現について
-
For ~ Next の中での Dim宣言...
-
vba ListViewの選択色について...
-
DBマジック
-
Wacomのタッチ機能が反応しませ...
-
textBoxに数値を入力すると円と...
-
以前アクティブだったウィンド...
-
Shellコマンドで別のexeを起動...
-
プログラム中の大カッコについて
-
レーザの広がり角とビーム径
-
X線CTにおけるコリメータの役割...
-
NOVAのCMで、まるで関西...
-
Detected memory leaks!
-
大腿骨の骨梁
-
フォートナイト Epic Games Lau...
-
CapsLock送信 キーストローク
-
エディットでEnterキーでのTAB移動
-
一目惚れってどんな感覚?
-
USJハリウッド・マジック(花火...
-
iPhone 14 Pro 対 GNS3000 のGP...
おすすめ情報