
dat.datファイルの情報を、WIN32_FIND_DATA構造体に得るために
handle = FindFirstFile("dat.dat", &win32finddata);
FindClose(handle);
//この後でwin32finddataを利用。
としているんだけど、今回はハンドルを使わないから
FindFirstFile("dat.dat", &win32finddata);
//この後でwin32finddataを利用。
として、FindFirstFileの返り値の取得と、FindClose関数を
省略してもいいんですか?
No.1ベストアンサー
- 回答日時:
FindFirstFile() は、*ハンドルを割り当てて* それを返してくれる関数ですから、
呼び出した側で使う/使わないにかかわらず、解放してあげる必要があります。
まあ、割り当てっぱなしになっていても、多少のメモリを占有しているだけです
から実害は少ないかもしれませんが、ずーっとメモリに常駐しているプログラム
だと、いずれ効いてきます。
返り値の取得を省略すると、FindClose() に渡すものが決まりませんから、これも
省略できません。
No.2
- 回答日時:
アプリケーション側でFindFirstFileの関数血を無視していてもFindFirstFile自信はHandleを作成しています。
結果としてFindCloseされないHandleはメモリリークを引き起こします。
また、Handleというより関数血を無視しているわけですからエラーチェックが複雑になります。
(SetLastError→FildFirst→GetLastErrorという手順か?)
FindFirstFileの返り値の取得と、FindClose関数の省略が即何らかの不具合を引き起こすわけではありませんが、推奨されない使い方であり、アプリケーション全体の動作を阻害する可能性はあります。
少なくともリークしたメモリは何らかの不具合を引き起こす可能性が残ります。
ありがとうございます。
今まであいまいに扱ってきたから、これに似た関数も
きっとこれと同じくハンドルの取得と開放が必要だと
思うから、見直さないといけないことにも気がつきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- MySQL MYSQL エラー 2 2022/10/18 11:37
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Java JaneStyleのスレッドが見れなくなった 1 2023/06/10 08:02
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- C言語・C++・C# いまc言語を独学で勉強しているのですがいまいちわかりません。 https://monozukuri- 3 2023/07/06 18:59
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
エクセルのメモリ使用状況/Appl...
-
初心者過ぎる質問ですが、VRAM...
-
オブジェクトの開放
-
大容量のメモリ確保をスワップ...
-
組み込み系でのmallocについて
-
if ( a & b == b )
-
ファイルマッピング関数で失敗
-
メモリが不足しています(VBA)
-
ExcelのVBAでメモリ解放できない
-
「memcpy」と「strcpy」について
-
VBAの配列サイズとメモリに関して
-
C++のCopyFileでメモリが増える
-
ゲームプログラミングのマップ...
-
Macターミナルで実行中のプログ...
-
Windows10でDOSゲーム
-
パソコンの演算速度について
-
世界一美しいソースコード
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリが不足しています(VBA)
-
メモリのセグメント違反の解決...
-
「memcpy」と「strcpy」について
-
メモリ不足
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
C言語における再帰呼び出しの...
-
ファイルマッピング関数で失敗
-
ExitProcessの関数コールについ...
-
EXCEL-VBAにてADOのレコードセ...
-
エクセルVBA 大容量CSVファイル...
-
ExcelのVBAでメモリ解放できない
-
メモリを解放しないとどうなる?
-
バッチファイルでの実行EXEのメ...
-
Bitmapを重ね合わせる方法
-
ルネサスマイコン(R8C) ビルド...
-
C,C++プログラムの強制終了時の...
-
C言語:関数のメモリ上でのサイ...
おすすめ情報