トップページ > 記事閲覧
メモリリークが発生する。
名前:そうりえ 日時: 2024/08/09 10:43

いつもお世話になっております。 そうりえです。 'Loaguelike_vampirelike.exe' (Win32): 'C:\Windows\System32\imm32.dll' が読み込まれました。 Detected memory leaks! Dumping objects -> {80} normal block at 0x00000231F0656F20, 16 bytes long. Data: <@ + > 40 91 2B A0 F7 7F 00 00 00 00 00 00 00 00 00 00 {79} normal block at 0x00000231F0657650, 16 bytes long. Data: < + > 20 91 2B A0 F7 7F 00 00 00 00 00 00 00 00 00 00 {78} normal block at 0x00000231F0656BB0, 16 bytes long. Data: < o+ > 20 6F 2B A0 F7 7F 00 00 00 00 00 00 00 00 00 00 {77} normal block at 0x00000231F0657380, 16 bytes long. Data: < o+ > 00 6F 2B A0 F7 7F 00 00 00 00 00 00 00 00 00 00 このようなメモリリークが発生して困っております。 因みに、いまシューティングゲームを作っております。 CRTライブラリを使ってメモリリークを特定したいのですが… 今自分の書いているプログラムで閉じたときにはメモリリークは発生しませんでした。 #include<Dxlib.h> #include"SystemMain.h" #include<crtdbg.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); _CrtDumpMemoryLeaks(); //↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ //ここから処理 SystemMain systemmain; if (systemmain.Initialize()) { systemmain.main(); } systemmain.finalize(); } メイン関数にてCRTライブラリを使用しております。 imm32.dllにて何かメモリリークが発生している?と考えてもよろしいでしょうか? よろしくお願いいたします。
メンテ

Page: 1 |

Re: メモリリークが発生する。 ( No.1 )
名前:管理人 日時:2024/08/10 14:42

> imm32.dllにて何かメモリリークが発生している?と考えてもよろしいでしょうか? 『'Loaguelike_vampirelike.exe' (Win32): 'C:\Windows\System32\imm32.dll' が読み込まれました。』 ↑ こちらのログ出力は文章の通り imm32.dll を使用するためにストレージからメモリに読み込まれたことを 伝えているだけのメッセージですので、メモリリークとは関係はありません > 因みに、いまシューティングゲームを作っております。 > CRTライブラリを使ってメモリリークを特定したいのですが… > 今自分の書いているプログラムで閉じたときにはメモリリークは発生しませんでした。 載せていただいたプログラムからは原因は分かりませんが、そうりえさんが作成されている シューティングゲームのプログラムの何処かに ・new で作成したものの delete で削除をしていないオブジェクト ・malloc で確保をした後 free で解放をしていないメモリ領域 があるのではないかと思います
メンテ
Re: メモリリークが発生する。 ( No.2 )
名前:そうりえ 日時:2024/08/10 18:03

ありがとうございます! わかりました。探してみます。
メンテ
Re: メモリリークが発生する。 ( No.3 )
名前:そうりえ 日時:2024/08/10 19:35

追記なのですが… shared_ptrを使っています。 #include "GameScene.h" #include"NormalEnemy.h" #include"Player.h" #include<DxLib.h> #include"Background.h" #include"EnemyManager.h" using namespace std; GameScene::GameScene() { _player = make_shared<Player>(); _back = make_shared<Background>(); _normal = make_shared<NormalEnemy>(); _EnemyManager = make_shared<EnemyManager>(); _player->Initialize(); _normal->Initialize(); } void GameScene::update() { _player->Update(); _EnemyManager->Update(); } void GameScene::draw()const { _back->SetDraw(); _back->Draw(); _player->Draw(); _EnemyManager->Draw(); _back->DrawEnd(); } このshared_ptrの使い方はあってますでしょうか?
メンテ
Re: メモリリークが発生する。 ( No.4 )
名前:管理人 日時:2024/08/11 22:45

> このshared_ptrの使い方はあってますでしょうか? プログラム全体を拝見しないと全体として正しく使用できているかはお答えできませんが 少なくとも載せていただいたプログラムの部分では正しく使用できていると思います ( _player, _back などの定義も拝見できていないので、あくまで _player, _back が 一般的な shared_ptr として定義されていれば、ですが )
メンテ

Page: 1 |

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

   クッキー保存