为变量分配了多少内存?

Pra*_*nth 2 c variables variable-names

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

我刚刚阅读有关内存分配的内容,不禁要问这个问题:

做到这两点

int x = 4;
Run Code Online (Sandbox Code Playgroud)

int this_is_really_really_long_name_for_an_integer_variable = 4;
Run Code Online (Sandbox Code Playgroud)

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

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

小智 7

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

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


Jan*_*Jan 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
Run Code Online (Sandbox Code Playgroud)

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

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