たとえば、次のように、コンパイル時に C プログラムのすべての変数を宣言したいと考えています。
char cache[CACHE_SIZE];
char udp_ring[MAX_UDP_PACKET_SIZE*MAX_REQUESTS];
int num_packets;
char error_codes[NUM_ERRORS][MAX_ERROR_STRING]= {
{"Unknown user\n"},
{"Wrong password\n"},
....
};
問題は、変数が BSS または DATA セグメントに入るとき、C プログラムの変数のサイズに制限があるかということです。たとえば、8 GB の RAM の CACHE_SIZE を宣言すると、機能しますか? 32ビットと64ビットで違いはありますか? プログラムを Linux で実行する予定で、RLIMIT_DATA 構成に制限はありません。