[英]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.