[Q] Maximum Array size
柏崎@北海道です。
# 何でもかんでも fj.comp.misc にするなと言われそうな…
要素数の大きい配列を作ろうとすると、LinuxのGCCでは[*1]コンパイラ時に
怒られ、FreeBSD のGCC では実行時にSIGABRTで終了してしまい、Solaris 8
のucbcc[*3]もFreeBSD同様、実行時に Killedで終了します。
件の配列は構造体配列で、
struct packet {
int nodenumber;
int destination;
int source;
char body [ 256 ];
}
のような、int * 3 + char * 256 により構成されています。この構造体を
上記のようなLinux 環境やFreeBSD 環境では30万程度作ると怒られ、或は
SIGABRT で終了され、Solaris 8上ではメモリある限りいくら作っても(100
万程度)怒られない模様です。Linux の主記憶は 512MB ですが、FreeBSD
では 2GB, Solaris 8 では 4GB です。
こういった配列の制限は主記憶容量(と他のプロセスが占有する資源)で
定まるのか、それとも何か他の要素があるのかどうにも良く分かっていま
せん。皆様からの情報をお寄せ頂ければ幸いです。
# その前に「そんなもの静的に確保するな」とか言われそうで恐い…。
[*1] Vine Linux 2.6r1 付属の gcc 2.95.3
[*2] FreeBSD 5.1R 上の gcc 3.2.2 [FreeBSD] 20030205
[*3] Solaris 8 Sparc 上の Sun Workshop 6 update 2 C 5.3
--
柏崎 礼生 (Hiroki Kashiwazaki)@HUIIC
Ph.D candidate in the Division of Electronics & Information
Engineering, Hokkaido University
mailto:reo@cc.hokudai.ac.jp
Tel:+81-11-706-2998
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735