指针元数据存储在哪里?

bma*_*oat 8 c++ pointers metadata

可能是我忽略了一些明显的东西,但指针元数据存储在哪里?例如,如果我有一个32位的int指针ptr并且我执行ptr++它就知道在内存中前进4个字节.但是,如果我有一个64位的int指针,它知道前进8个字节.那么谁跟踪指针的类型ptr和存储位置?为简单起见,您可以将其限制为C++.

mba*_*ett 18

它本身并不存储在任何地方.编译器查看ptr的类型并将++操作转换为正确字节数的增量.


dmc*_*kee 8

在编译器运行时的符号表中.无处而你的程序运行时,或者更确切地说,它是由编译器产生的较低级代码隐.