可能重复:
Whether variable name in any programming language takes memory space
我只是在阅读关于内存分配的内容,并且不禁怀疑这个问题:
两者兼顾
int x = 4;
和
int this_is_really_really_long_name_for_an_integer_variable = 4;
占用相同数量的内存(总内存占用变量。不只是sizeof(int)
)
我知道这个问题与'编程语言和编译器构造'有关。但是,我没有研究它:(
答案 0 :(得分:7)
在C?是的,这些变量将占用相同的空间。 变量名仅在编译时由编译器使用。
但是有些语言在运行时存储变量名称。
答案 1 :(得分:7)
一般来说,它们占据相同的空间,即sizeof(int)
。但是,有人可能会争辩说,在构建带有附加符号的目标文件进行调试时,比率是不同的。变量存储的数据量不会改变,但调试符号在变量名称较长的情况下占用更多空间。请考虑以下示例。
$ cat short.c && gcc -c short.c && wc -c short.o
int x = 0;
927 short.o
$ cat long.c && gcc -c long.c && wc -c long.o
int this_is_really_really_long_name_for_an_integer_variable = 0;
981 long.o
大小的差异正是变量名称长度的差异。
从运行时效率和内存使用的角度来看,无关紧要。
答案 2 :(得分:3)
变量名称的长度与为其保留的存储量无关;在大多数情况下,变量名称不会保留在生成的机器代码中。
答案 3 :(得分:2)
32位,因为编译器不会存储您的名字。它只会将其作为地址处理。 int容器只占32位。
答案 4 :(得分:1)
变量名仅用于编译时的地址绑定。
变量名存储在符号表中的词法处理中,这是编译过程的一个阶段
一旦地址绑定完成,则不使用变量名称,&你的变量名长度无关紧要。它只需要32位