为变量分配了多少内存?

时间:2012-11-27 11:32:39

标签: c variables variable-names

  

可能重复:
  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)

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

5 个答案:

答案 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位