win7(64bit)の悲劇 - fopen()にご注意 -

 で、

やっとかいはつできるー!

と思ったら、異様ーに重い。

デバッグができない( 前頁参照 )ので、要所要所で時間を計測してみると、

ファイル操作が尋常じゃなく重い。

何か一言書き出す度に40msとかアリエナイ…。



ただ、「ファイル書き込み」なんて標準機能がそんなにかかるとは考え辛かったので、

今まで使っていたfopen()以外の方法(「CreateFile()」「_open()」)を試してみるも、

これもダメ。



んじゃーどうするのよ?



 答えは単純。頻繁にopenしなければいい。

exeの最初でopenして、終わりにcloseすればいいんじゃね?

という話。

本当はやりたくないんだけどね。

ファイルが開きっ放しになるわけだから、

他からopen中のファイルにアクセスできなくなるのは勿論、

exeが不正終了しようものなら、

開きっ放しのファイル=不正終了したexeからしかアクセスできないファイル

=アクセスできないファイル

が出来る可能性があるので。*1



まぁしかし、背に腹は変えられないので、試してみたら上手くいくわけで。

…しかも、0msで返ってきてるな…そんなに速かったっけ?

試しに間にSleep( 20 )あたりを挟んでみたら、きっちり20msごとになっているし、

間違いではなさそう…。



 しかし、前述の問題があるのであまり使いたくないな…。

一応、C++なのでtry{}catch{}とかが使えたりするので、

メイン部分をtry内部に入れて、catchでfclose()するようにしてみたりとか

小細工は入れてあるけど、どこまで機能するものなのか…。




*1:まぁOS再起動させれば多分大丈夫ですけど、さすがにそれはどうかと