繁体   English   中英

变量名占用多少字节?

[英]How many bytes does the name of a variable take up?

char fooishness = 'f';

存储f需要 1 个字节,但存储fooishness需要多少个字节? 在哪里? 它是如何扩展的? 我读过这个,但它没有解决命名所需的空间。

如果我有一个字符数组,寻址数组是否需要比保存数据本身更多的存储空间?

名称对于 C++ 程序来说是短暂的:不管你如何命名事物,执行的代码 [大部分] 保持不变。 很少有例外,名称的性质实际上确实进入了程序的可观察行为,例如,当使用std::type_info()时,它确实提供了对有点类似于类型名称的实体的访问。

虽然名称不影响存储的程序实体的大小,但无论它们是在堆上、堆栈上、全局 memory 还是嵌入在其他对象中的名称都可能对程序本身产生大小影响:用于各种实体的名称与经常(但不一定)影响程序运行大小的调试信息。 此外,外部引用实体的名称可能最终被用于 linker 符号,尤其是在使用任何形式的共享对象时,以解决这些事物所指的内容。 然而,在所有这些情况下,名称都是一个常数大小,以某种方式影响程序大小。

例子:

#include <iostream>

int main() {
    char fooishness = 'f';
    std::cout << fooishness << std::endl;
    return 0;
}

编译后的可执行文件61,376 字节

    #include <iostream>

int main() {
    char fooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishness = 'f';
    std::cout << fooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishnessfooishness << std::endl;
    return 0;
}

编译后的可执行文件61,376 字节

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM