【发布时间】:2012-08-25 22:21:27
【问题描述】:
我想在编译时声明我的 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"},
....
};
问题是,当 C 程序中的变量进入 BSS 或 DATA 段时,它们的大小是否有任何限制? 例如,如果我声明 8GB RAM 的 CACHE_SIZE,它会起作用吗? 32位或64位有什么区别吗?我打算在 Linux 上运行程序,我的 RLIMIT_DATA 配置将没有限制。
【问题讨论】:
-
“我想在编译时声明我的 C 程序中的所有变量”——那么有办法在运行时声明它们吗?
-
是的,但是我不想和glibc链接,所以我需要避免malloc()
-
sigh - 声明变量不是你想的那样。您不能在运行时声明变量。去拿一本 C 书。
-
C中的变量在源代码中声明,在其编译对象 (.obj) 代码中没有任何直接表示。 -
@H2CO3 我相信OP希望静态分配程序中的所有变量。