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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
「ヒープサイズの設定」て何?
-
メモリ不足
-
EXCEL-VBAにてADOのレコードセ...
-
メモリを解放しないとどうなる?
-
大容量のメモリ確保をスワップ...
-
[ちょっと息抜き]メモリを解放 ...
-
メモリの解放について VB6 VBA
-
VBAの配列サイズとメモリに関して
-
エラー内容
-
C言語初心者です。debug assert...
-
recvfrom関数の戻り値について
-
C言語における再帰呼び出しの...
-
ファイルマッピング関数で失敗
-
H8 マイコン セクションの設...
-
移動可能メモリ
-
ExitProcessの関数コールについ...
-
メモリのセグメント違反の解決...
-
Z80CPUのプログラムバンク切...
-
メモリの消費量について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
大容量のメモリ確保をスワップ...
-
エクセル キャッシュメモリー...
-
エクセルのメモリ使用状況/Appl...
-
「ヒープサイズの設定」て何?
-
ExcelのVBAでメモリ解放できない
-
メモリの解放の仕方
-
メモリ不足
-
メモリのセグメント違反の解決...
-
ファイルマッピング関数で失敗
-
「memcpy」と「strcpy」について
-
closeとメモリの開放について
-
EXCEL-VBAにてADOのレコードセ...
-
マクロのスピードがダウンする??
-
VB.netでUSBメモリの固有I...
-
エクセルVBA 大容量CSVファイル...
-
メモリの消費量について
-
【C言語】再帰が時間がかかる...
-
プログラム実行中に強制終了
おすすめ情報