我想在編譯時聲明在我的C程序中的所有變量,例如像:BSS的最大大小和數據
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"},
....
};
的問題是,有沒有對變量的大小的任何限制一個C程序何時進入BSS或DATA段? 例如,如果我聲明8GB內存的CACHE_SIZE,它會工作嗎? 32位或64位是否有區別?我打算在Linux上運行該程序,並且在我的RLIMIT_DATA配置中沒有限制。
「我想在編譯時在C程序中聲明所有的變量」 - 所以有一種方法可以在運行時聲明它們嗎? – 2012-08-25 22:22:54
是的,但我不想與glibc鏈接,所以我需要避免malloc() – Nulik
**感嘆 - 聲明一個變量不是你認爲的那樣。您無法在運行時聲明變量。去抓一本C書。 – 2012-08-25 22:34:51