2016年01月20日

Visual C++ 2010のfwriteの限界?

先日、お仕事で、後輩の作っているプログラムを見る機会があったのですが、そこで、ちょっと不思議な挙動を見たのでメモ。

Visual C++ 2010で、fwrite() 関数に対して500MB近いバッファを与えて、一気に書き込みをしようとしていたのですが、fwrite() 関数が戻り値0でエラーリターンしていました。errnoを調べると、「Invalid argument」(不正な引数)を示していました。

試しに、次のどちらかを試すと、問題は解消しました。

  • fwrite()に与えるバッファサイズ・書き込みサイズを200MB近くまで下げる。
  • fopen()するときに、modeとして "wb" ではなく "wb+" を与える。

おそらく、Visual C++ 2010 の fwrite() 関数の実装か、その実装で使われている Windows API (WriteFile() APIか何か?) の制限があるのでしょう。一度に書き込める限界があったのかも知れません。

fopen() するときのmodeに"+"を付けると問題が解決する理由もよく分かりませんが、"+"は読み書き兼用のファイルを開くことを意味しており、読み書きのために多くのバッファを確保できる仕組みがあるのかも知れません。

ネット上で検索しても、それっぽい情報が出てこなかったので、ちょっと不思議に思いまして。

あるいは、ハードウェア的に、いわゆる DMA 的なやつが連続して扱えるメモリ量に限界があるとか?そういったものもあるんでしょうか。そこら辺はよく分からないですけどね。

posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | C/C++

2016年01月19日

1月14日〜15日にかけて見た夢

昨日は初夢?のことを書いたわけですが、実はこの記事を書いた翌日の1月14日〜15日に、また印象深い夢を見たので、メモしておこうかと。

教師になった夢でした。もしかしたら、教育実習だったかもしれません。
5人1組のチームティーチングで、自分がメインの教師という役目。
改めて考えてみると、ずいぶんと人数の多いチームティーチングですね。

生徒には数学を教えていました。黒い黒板にチョークを持って。
授業が終わる2分前くらいに、授業を終えようとしたところ、おデブの不良っぽい生徒3人が挙手し、何をされるのかと思ったら、激しいダンスでお礼を披露されました。
で、時間ぴったりに授業は終了。

自分は教育実習をやっていたとき、時間ぴったりであったことを担当教諭に褒められたため、自分の中では「時間ぴったり=教育実習」なのかもしれません。というのも、1月14日に行われた会議が、自分の進行で時間ぴったりに終わったので。それが印象に残って見たのかも知れません。

場所は、おそらく自分の出身高校です。天気は曇り。
授業が終わった後、チョークを返し忘れていたことに気づいて、黒板のところにチョークを戻しに行った。
すごく名残惜しい感覚。教室を出るとすぐに目が覚めました。

なんだろう、教師になりたかった夢みたいなのが出てきたのかな?
たしかに、大学の時に教員免許は取得したけど。
でも、その教員免許も、たぶん失効しちゃってからだいぶ経ちますね。
posted by ayacy at 02:00 | Comment(0) | TrackBack(0) | 日記

SMAPは解散しないってことでいいのかな

社会人としての話題作りと、家庭内の平和のために、ここのところのSMAP解散騒動には注目していました。
昨夜のSMAP×SMAPで、5人が生放送に出演して、自らの思いを語ったわけですが、結局のところ、解散するのかしないのかは、よくわからなかった感じですね。
ヤフーニュースや、産経新聞等の記事を見ると、「グループ活動の継続表明」と考えれば良いらしいです。まぁ、そういうことなら良いのですが。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | 日記