我想在编译时声明在我的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