sha*_*oth 10 c++ compiler-construction pointers casting
最近我回答了另一个问题,询问每个体面的C++程序员应该能够回答的问题.我的建议是
Q: How does a pointer point to an object?
A: The pointer stores the address of that object.
Run Code Online (Sandbox Code Playgroud)
但是用户R ..不同意AI提出的问题 - 他说正确的答案是"它是特定于实现的".虽然现在的实现将数字地址存储为指针,但没有理由它不能更精细.
当然,我不能不同意除了为了不同意而存储地址之外可能还有其他实现.我真的很感兴趣那里有其他真正使用过的实现.
除了在整数类型变量中存储地址之外,C++中其他实际使用的指针实现是什么?如何dynamic_cast实施铸造(特别是)?
在概念层面上,我同意你的观点 - 我将对象的地址定义为"在内存中定位对象所需的信息".但是,地址看起来可能会有很大差异.
这些天的指针值通常表示为一个简单的线性地址......但是有一些架构,其中地址格式不是那么简单,或根据类型而变化.例如,在x86上以实模式编程(例如在DOS下),有时您必须将地址存储为段:偏移对.
有关更多示例,请参见http://c-faq.com/null/machexamp.html.我发现对Symbolics Lisp机器的引用很有趣.
我会称之为Boost.Interprocess证人.
在Boost.Interprocess进程间指针是从映射的内存区域的开头偏移.这允许从另一个进程获取指针,映射内存区域(哪个指针地址可能与传递指针的进程中的指针地址不同)仍然可以到达同一个对象.
因此,进程间指针不表示为地址,但可以将它们解析为一个.
感谢收看:-)