C++指针名称

Bab*_*ker 5 c++ pointers

我理解指针用于指向对象,因此您必须在程序中使用相同的指针.但是,是否以及如何存储指针名称.如果声明一个指针名称占用的资源多于它所指向的对象,那么它是否过分?

int intOne = 0;
int *this_pointer_is_pointing_towards_intOne = &intOne;
Run Code Online (Sandbox Code Playgroud)

我知道这是一个荒谬的例子,但我只是试图了解这个想法.

编辑:指针的名称必须存储在某处,占用的字节数多于指向对象的地址.

ove*_*ked 23

变量名的长度对程序的大小没有任何影响,只是编写程序所需的时间长度.

  • 我们需要的最后一件事是开发人员将其变量命名为尽可能短,以"优化编译时". (22认同)
  • 并且在很小程度上,编译所需的内存和时间. (3认同)

Joh*_*itb 14

只有编译器才能找到要引用的变量,只需要局部变量的名称.编译后,这些名称通常会被删除,并完全被数字符号或等价物替换.对于所有实际上没有链接的名称都会发生这种情况(当然,如果你进行调试构建,情况可能会有所不同).因此,功能参数也是如此.

例如,全局变量的名称无法删除,因为您可以从程序中的其他单元使用它,并且链接器必须能够查找它.但是在您的程序被链接之后,甚至可以删除这些程序的名称.

毕竟,这些并不占用运行时内存.这些名称存储在重新分配表中以便链接(请参阅strip程序如何删除这些名称).

但无论如何,我们正在讨论一些已被对齐和诸如此类浪费的字节.将其与模板实例化的地狱名称进行比较.试试这个:

readelf -sW /usr/lib/libboost_*-mt.so  | awk '{ print length($0), $0 }' | sort -n
Run Code Online (Sandbox Code Playgroud)


rei*_*ein 9

不存储指针名称.指针名称(或该事项的任何变量名称)不会编译到最终二进制文件中(前提是您不能使用设置为on的符号进行编译).

指针只是存储在内存中的整数(或长整数),而内存又指向它们指向内存中某个位置的项目.