• 締切済み

メモリリーク?どう回避すれば。。。

Visual Studio 2005 SP1(Vista 64bit)で開発しているのですが、実行時に固まってしまうので、デバッグをかけたところ終了時に f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp と出てメモリリークだと表示されました。 64ビットアプリの開発中でわからないことだらけです。 上記のメモリリークはどのように回避すればよいのでしょうか?

みんなの回答

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.1

下記URLを参考にしてくたさい。 Visual Basic .NET および Visual Basic 2005 でハング、メモリ リーク、デッドロック、競合状態をデバッグするためのロードマップ

参考URL:
http://support.microsoft.com/kb/317297/ja

関連するQ&A

  • メモリリークを調べています。

    メモリリークを調べています。 MFC(VC2005)です。 MFC拡張DLLで作成したアプリケーションにメモリリークがないかを調査し始めたのですが、VisualStudioでデバッグでは 「Detected memory leaks!」は出ません。 パフォーマンスモニタで、このDLLを静的リンクしたEXEのPrivateByteを約90時間監視すると、2回だけ大きな上昇(といっても数10KB)が見られました。 上昇するまでは横ばいですが、この横ばいの時間が2回とも異なります。 これはメモリリークと言えるのでしょうか? ちなみに、このDLLの調査対象機能は画像描画機能で、定期的にメモリ確保→メモリ解放を繰り返します。 メモリリークでないとしたら、どう結論付けたら良いでしょうか? 解決方法はありますか? 私としてはフラグメンテーションを疑っています。

  • Detected memory leaks!

    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」の実行場所をできるだけ後にするというようなことで対策できたようですが、このプロジェクトでは、記述していません。(明示的には実行していない) 何か、何かアドバイスをいただけたら助かります。 よろしくお願いいたします。

  • 起動時に何のダイアログも表示されない

    こんにちは。 大変恐縮ですがこちらで質問させてください。 開発環境はVC2005のMFCです。 質問内容は題名の通りなのですが、デバッグを実行しても何のダイアログが表示されない という状態になってしまいました。 すぐにデバッグが終了してしまいます。(「デバッグなしで開始」でも同様です。) プロジェクトはダイアログベース、スタティックライブラリ、ソケットを使える設定で 作成しました。 プロジェクトを作成してから他ダイアログを作り全てのダイアログに新しくボタンを配置したのと、初期配置のOK,キャンセルボタンを削除した以外は、コード上に手を加えるなどはしていません。 また、以下のようなエラーコードが出力されました。 Dumping objects -> f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(195) : {75} normal block at 0x003496B8, 488 bytes long. Data: < > E8 03 00 00 00 00 00 00 E9 03 00 00 00 00 00 00 {74} normal block at 0x00349580, 248 bytes long. Data: < > FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 Object dump complete. プログラム '[1528] test.exe: ネイティブ' はコード 0 (0x0) で終了しました。 何か原因と対策等がわかりましたら回答をいただければと思います。 よろしくお願いします。

  • 学校PCで問題なくデバッグできるのに自宅PCのくVisual Studioでは同じソースがデバッグできません。

    学校PCで作成しているC++ MFCアプリを自宅PCでも修正できるよう同じくVisual Studioを買ったのですが、同じソリューション、同じソースなのに家PCでだけデバッグ時にエラーが出ます。 学校環境:デスクトップ Windows XP Pro SP2 Visual Stuidio 2005 Academic Edition 家環境:ノート Windows XP Pro SP2 Visual Stuidio 2005 Academic Edition (同じ) プロジェクトのディレクトリごとコピーし、ソリューションファイルを開いてデバッグすると以下のダイアログが出ます。 Debug Assertion Faild! Program: c:\プログラム名\debug\プログラム名.exe File:f:\rtm\vctools\vc7libs\ship\atlmfc\src\occcont\cpp Line:950 For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) 中止 再試行 無視 環境は同じはずですが…。家PCにFドライブはありません。学校PCには仮想ドライブとしてFはありますが何もマウントしていません。家PCのVC++で簡単なMFCアプリを作ると無事デバッグ出来ます。このままではVS買った意味がありません…。 「ソリューションのリビルド」「(プログラム名)のリビルド」してから「デバッグ」してもダイアログが発生します。両リビルド自体にはエラーはでません。デバッグ時のみ出ます。

  • メモリリーク

    メモリリークに関する質問です。 現在稼動しているサーバーについてなのですが、メモリの使用量が実際に搭載しているメモリ量を超えてスワップが発生してしまっています。一日当り数MBのメモリが消費されてしまっているようなのですが、タスクマネージャー上ではそんなに増えているアプリケーションはありません。 プリンタドライバが悪さをしているとの話もあるのですが、調査の仕方がわからず困っています。 まずはこれがメモリリークなのかどうかがよくわからないのですが、調査方法等ご存知の方、知恵を貸してください。よろしくお願いいたします。 【ちなみに環境は】 ・Windows2000Server ・ORACLE9.0.1 ・プリンタ用のパッケージ ・VC++及びVBにて開発 【こんなシステムです】 ・一日に1400枚程度の紙を印字 ・RS232Cを使用して他のコンピュータと通信を  一日に1400回程度行っている  (1回あたり256バイト)

  • メモリリークについて

    VC6.0でデバッグ実行すると Detected memory leaks! Dumping objects -> ソースファイル名(932) : {136739} normal block at 0x00FD4AC0, 0 bytes long. Data: <> メッセージがあり メモリがリークしているようです メッセージやソースから察するに 0バイトの領域を確保し それを解放したときに起こっているようです 領域をmallocして 解放ではNULLでなければ解放 という処理はしてはいけないことなのでしょうか 0バイトの領域を確保した場合 又は0バイトの領域を確保しないように 処理しないといけないのでしょうか? 知識のある方よろしくお願い致します

  • メモリリークの件

    メモリリークについて教えてください。 最近VC++を勉強中なのですが、メモリリークというものを知り、_CrtDumpMemoryLeaks()をしたところ、以下のコメントが出力されました。 [コメント] Detected memory leaks! Dumping objects -> strcore.cpp(118) : {71} normal block at 0x00344978, 20 bytes long. Data: < cmd.> 01 00 00 00 07 00 00 00 07 00 00 00 63 6D 64 2E {48} client block at 0x003428E8, subtype 0, 64 bytes long. a CDynLinkLibrary object at $003428E8, 64 bytes long {43} client block at 0x00342720, subtype 0, 64 bytes long. a CDynLinkLibrary object at $00342720, 64 bytes long {41} client block at 0x003425D0, subtype 0, 64 bytes long. a CDynLinkLibrary object at $003425D0, 64 bytes long Object dump complete. スレッド 0x584 終了、終了コード 0 (0x0)。 上記のコメントから、メモリリークを起こしていることはわかりました。ただ、strcore.cppというクラスは作成していないのですが、エラーが出ます。 多分他の関数から呼ばれているクラスだと思うため、クラス等をコメントアウトして調べたのですが、エラーがまだ出力されます。 (Data: < cmd.> 01 00 00 00 07 00 00 00 07 00 00 00 63 6D 64 2Eここは自作クラス上の問題だと思います。) newとかの解放はしているのですが、他にメモリリークをする原因ってあるのでしょうか?

  • メモリリーク

    VC++ 2010 SP1 MFC使用環境です 現在i以下のサンプルソースをベースに改造しているのですが http://code.msdn.microsoft.com/windowsdesktop/DVD-RW-870205bd その中の関数内で以下の行があります BSTR path = ::SysAllocString(変数)); 改造に当たり関数内で変数の内容を変更させて 同様の処理を複数回行いたいと思っています ここで あれ?  と思ったのが ::SysFreeString(path); 実行してなくてリークしないのか? ということなんですが 試しに BSTR path = ::SysAllocString(変数)); を複数回実行してプログラムを終了してみましたが 出力Windowにはメモリリークは出ていないように感じます その判断が間違ってる可能性は否定できないので質問させていただきました 実際今回のような場合 SysFreeString 関数をコールする必要はないのでしょうか? 仮に今回は必要ないにしても関数自体が存在するということは必要性はあると思うのですが どういったときにコールする必要があるのでしょう

  • メモリリークのデバッグ

    プログラムの実行時にエラーで停止してしまいます。 数値計算系のプログラムで反復計算を行っています。 数万回反復させても大丈夫なのに100万回くらい反復 計算するとプログラムが停止します。 場合によりパソコンがフリーズします。 メモリ関連が原因であることは想像できるのですが デバッグの方法がわかりません。計算の途中にでてくる 関数等でつかわれている変数でmallocしたものは全て 解放しているつもりですがどこかおちがあるのかもしれません。オチがある場合どこを解放しわすれているのか 現在つかめていません。 VCをつかっているのですがデバッガを使って実行途中の メモリの状態を確認する方法など、この問題を解決する 為に有効であると思われる方法をご存じでしたら教えて ください。 windows2000 visualC++6.0professional メモリ256MB

  • デバッグ支援ツールを探しています。

    デバッグ支援ツールを探しています。 開発ツールとしてはVC++6.0を使用し、C++でコーディングしますが、いろいろな関係でデバッグの支援ツールを使用したいと思っています。 ツールの機能としては、 ・クロスリファレンス ・メモリリークチェック ・カバレージ ・プロファイル が欲しい機能です。 こんなツールがある、これが使いやすかった等の情報を教えてください。

専門家に質問してみよう