perlの仮想記憶の対応は?
[上に]
[前に]
[次に]
J.Naka
[E-Mail]
1999/09/15(水) 16:33:01
Win95です。
sysread(IN,$buf,$size);
上の$sizeに指定できる上限は何を基準&理由にしてあるのでしょうか。
0xFFFFFFFF = 4G とか当然エラーです。もっと小さくするとOut of memoryとかなります。
これは、PerlがOSのスワップファイルサイズの上限をチェックしてのエラーでしょうか?それとも、Perl内部の定数でしょうか?
B-Cus
1999/09/15(水) 16:40:26
> 0xFFFFFFFF = 4G とか当然エラーです。
-1だから。
> Out of memoryとかなります。
OSの制限です。
J.Naka
1999/09/15(水) 16:56:54
[[解決]]
解答ありがとさんです。
>OSの制限です。
なるる、OSの制限をPerlの制限って事ですね。
ちと独り言(^^;
-1とかの論理的上限の指定があった場合、それは、
OS制限内でファイルサイズ全体の指定と等価、くらいに変換してくれてもよさそうな感じもする。
ふじ
1999/09/16(木) 00:10:22
>OS制限内でファイルサイズ全体の指定と等価、くらいに変換してくれてもよさそうな感じもする。
移植性無くなるでしょ。
B-Cus
1999/09/16(木) 00:42:33
こっちの言いたいこと伝わってるのかな。
別に -1 が論理的上限を意味するなんてことはない。単にこっちの環境で
やったら
Negative length at sysread line 5.
となったから、sysread の中では $size が符号付き32ビット整数で
扱われているので、0xffffffff==-1 になってるんだろう、ってこと。
Win環境持ってないので、Win95でどうなるかは知らない。
でも、各アプリが仮想記憶のことなんて考えるはずがないから
(それはOSの仕事だから)、Out of memory は OS の制限だろうってこと。
# perlのソース持ってきて眺めることくらいはした?
# わかるわからないは別として。
[上に]
[前に]
[次に]