我刚开始学习C ++。我使用Stroustrup作为参考书。在阅读介绍性章节的过程中,我遇到了一条我无法理解的问题。
" C ++旨在在单个地址空间内运行"
有人可以解释一下这是什么意思吗?
答案 0 :(得分:0)
今天实际上是不真实的。事实上,C ++设计用于运行一个或两个地址空间。如果代码和数据是分开的,则有两个地址空间。
地址空间是可能的指针值的范围。由于void*
可以指向任何对象,这意味着所有对象都在void*
的地址范围内。但是,未指定void*
是否可以指向函数。因此,函数的地址空间可能与对象的地址空间不同。
然而,最初的C ++是在实际上具有统一地址空间的机器上设计的,其中对象和功能可以混合在一起。 POSIX和Windows实际上需要这个,因为dlsym
/ GetProcAddress
支持函数和对象查找。