2

可能重复:
任何编程语言中的变量名是否占用内存空间

我只是在阅读有关内存分配的内容,不禁想知道这个问题:

两者都做

int x = 4;

int this_is_really_really_long_name_for_an_integer_variable = 4;

占用相同数量的内存变量占用的内存。不只是)sizeof(int)

我知道这个问题与“编程语言和编译器构造”有关。但是,我不必研究它:(

4

5 回答 5

7

在 C? 是的,这些变量将占用相同数量的空间。变量名仅由编译器在编译时使用。

但是有些语言在运行时存储变量名。

于 2012-11-27T11:34:41.843 回答
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

大小的差异正是变量名称长度的差异。

不过,从运行时效率和内存使用的角度来看,这并不重要。

于 2012-11-27T11:37:23.307 回答
3

变量名的长度与为其保留的存储量无关;在大多数情况下,变量名不会保留在生成的机器代码中。

于 2012-11-27T11:37:03.953 回答
2

32 位,因为编译器不会存储你的名字。它将仅将其作为地址处理。int 容器仅占用 32 位。

于 2012-11-27T11:36:11.880 回答
1

变量名仅用于编译时的地址绑定。
变量名称在词法处理中存储在符号表中,这是编译器过程的一个阶段,一旦完成地址绑定,就不会使用变量名称,并且变量名称的长度无关紧要。它只需要 32 位

于 2012-11-27T11:37:21.250 回答