MemoryMappedFile ― 2010/11/25 06:17
やっと、何となく、わかったような気がするので、記録のために書いておきます(いや、間違っている可能性もなきにしもあらずなことろもあるので、間違っていたら、わかったタイミングで修正ます)。さて、MemoryMappedFile。ご存じの通り、ファイルをメモリに割り当てる(←そのまんま)のですが、その時に、MapViewOfFileで複数回同じ領域を割り当てることが認められている理由がさっぱりわかりませんでした。今頃になって、その理由の一部がわかってきたような気がします。よくよく考えると、MapViewOfFileで割り当てられる領域は、64k 単位での区切り位置(ここがポイント)になります。何を言いたいかというと、例えば、最初のMapViewOfFile で、0~ 63kまでの領域を指定したとして、次に、63k~120kまでを指定したい場合、最初のMapViewOfFileでは、0~64k, 次のMapViewOfFileでは、0~128kを指定する必要があります。つまり、実際に使うViewは、それぞれ2つとも異なる領域を指定したいのに、MapViewOfFileの区切りが64k のためどうしても同一の領域を指定する必要が出てくることになります。恐らく、これがMapViewOfFileで同一の領域を複数回指定して良い理由の一つでは無いかと推測します。もし、間違っていたら、ご指摘ください。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。