0

syscall.Mmap() 呼び出しは、int 型の長さ引数を取りますが、これは 2GB にのみ有効です。次に、より大きなファイルをmmapするにはどうすればよいですか?

注: 64 ビット システムなので、アドレス空間は問題になりません。

4

1 に答える 1

4

http://golang.org/src/pkg/syscall/syscall_unix.goで、 mmapperの Mmap メソッドを調べてください。そのコードをコピーして、必要に応じて変更できるはずです。

もちろん、[] バイトに mmap することはできません。なぜなら、スライスの長さは "int" (現時点ではどこでも 32 ビット) に定義されているからです。より大きな要素タイプ ([]int32 など) に mmap するか、メモリへのポインターをいじることができますが、syscall.Mmap のドロップイン置換にはなりません。

于 2012-07-24T01:58:43.300 に答える