トップページ > 記事閲覧
メモリリークが発生する
名前:TS 日時: 2019/07/01 10:07

いつもお世話になっています。 環境をVisual Studio 2019 Proにアップデートして、いつも通り使おうとしたらメモリリークが発生しました。 Dxlibは最新の、Ver 3.20fを使っています。 コンソールの出力がコチラ 966:Alloc memory dump 968: size: 32880( 32.109kb) user size: 32768( 32.000kb) time:58094 file:Main\DxHandle.cpp line:86 ID:1 addr:097c00b0 data:[00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00] 969: size: 1136( 1.109kb) user size: 1024( 1.000kb) time:58094 file:Main\DxHandle.cpp line:86 ID:3 addr:097c8120 data:[00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00] 970: size: 131184( 128.109kb) user size: 131072( 128.000kb) time:58094 file:Main\DxHandle.cpp line:86 ID:3 addr:03df0120 data:[00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00] 971: Total size:164864(161.000kb) Alloc num:3 以下の、DxLib_InitとDxLib_Endだけのソースでも発生します。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); // メモリリーク監視 SetGraphMode( 320, 240, 32 ); // 解像度指定 SetOutApplicationLogValidFlag( true ); // ログあり // スクリーン設定 ChangeWindowMode( true ); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 } コチラの環境の問題なのか、VS2019とDxlibの相性なのか分かりませんが、 対応をお願いできますでしょうか?
メンテ

Page: 1 |

Re: メモリリークが発生する ( No.1 )
名前:TS 日時:2019/07/01 10:51

追記です。 プロジェクトのプロパティのC++言語標準を「ISO C++17 標準 (std:c++17)」にしています。
メンテ
Re: メモリリークが発生する ( No.2 )
名前:gdrop 日時:2019/07/01 21:27

最新Temp版で試しましたが、x86とx64でDebug/Releaseを試しましたがこちらではいずれも問題ないですね。 Windows 10 Pro, x64, VSC 2019
メンテ
Re: メモリリークが発生する ( No.3 )
名前:管理人 日時:2019/07/02 00:42

私もTSさんが載せてくださったコードを手元の環境で試してみましたが、メモリリークすることはありませんでした ( Windows 10 Pro, Visual Studio Community 2019 Version 16.1.4 ) ( 手元のバージョンと公開されている最新版に差があるかと思い公開版の Ver3.20f で試してみましたが、やはりメモリリークはしませんでした ) 原因は謎ですが、本日ビルドした暫定最新版では TSさんの環境でもメモリリークが発生しないかもしれませんので、 よろしければこちらのバージョンを試してみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: メモリリークが発生する ( No.4 )
名前:TS 日時:2019/07/02 11:15

返答ありがとうございます。 頂いたバージョンでリビルドしてみましたが、結果は同じでした。 VS2017にもどして、C++17のオプションを切って試しても同じ結果になりました。 プロジェクトとログを送らせていただきますので、何か解決の参考になればと・・・ http: //bit.ly/2FNBqOB VS2017のオプション構成を最小限にしているのも関係しているかもしれないので、 こちらでも調査してみます。
メンテ
Re: メモリリークが発生する ( No.5 )
名前:gdrop 日時:2019/07/03 05:38

とりあえずメモリリークが発生しないようにするには  SetNotSoundFlag(TRUE); をDxLib_Init()の前に書くと大丈夫だと思います。 ログが付いているのでわかりましたが、VS2017と2019の違い、とかではありません。 DirectSoundの初期化の途中で失敗しています。 具体的には DxSoundWin.cppのint InitializeSoundSystem_PF_Timing0( void )の中で  hr = SoundSysData.PF.DirectSoundObject->Initialize( NULL ) ; でFAILEDになってしまうので  SoundSysData.PF.DirectSoundObject->Release() ;  SoundSysData.PF.DirectSoundObject = NULL ;  return -1 ; で抜けているのですが、ライブラリでなにか解放漏れがあるのではと思われます。 ここでif (FAILED(hr))のところをif (!FAILED(hr)) にすれば我々のPCでも同じようにリークが発生します。 あとは管理人さんにお任せということで... SetNotSoundFlag(TRUE); を実行することで、音は使えませんがリークは無くなります。 ちなみに、エラーが発生しているということは、音機能が一切ついていないPCなのでしょうか?
メンテ
Re: メモリリークが発生する ( No.6 )
名前:TS 日時:2019/07/03 13:07

>>gdrop さん ありがとうございます。 SetNotSoundFlag(TRUE);を追加したら出なくなりました。 今使ってるPCは、勝手に音が鳴ると困るのでBIOS側でサウンド機能を切っていました。 原因は分かったので、後は管理人さんにお任せですね。
メンテ
Re: メモリリークが発生する ( No.7 )
名前:管理人 日時:2019/07/04 00:26

> TSさん、gdropさん ご情報ありがとうございます サウンドデバイスが無い場合の問題だったのですね… SetNotSoundFlag(TRUE);を追加しなくてもメモリリークが発生しないように 修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: メモリリークが発生する ( No.8 )
名前:TS 日時:2019/07/05 10:07

> 管理人さん 対応ありがとうございます。 ライブラリを上書きしたらメモリリークは出なくなりました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存