为什么在 C/C 中函数和数据指针不兼容
虽然数据指针和函数指针之间的转换在大多数平台上通常是成功的,不保证兼容性。这就提出了一个问题:考虑到两者都指向内存地址,兼容性不应该是简单的吗?
解释在于计算系统所采用的架构。 C/C 并不将自身限制于特定的体系结构,并且允许灵活地管理内存。一些架构(例如哈佛架构)为代码和数据维护单独的内存空间。相比之下,冯诺依曼架构将代码和数据存储在同一内存中。
对于冯诺依曼架构,代码和数据驻留在同一空间中,函数指针和数据指针之间的转换可能是可能的。然而,实际的兼容性不能被认为是理所当然的。在区分两个内存空间的系统中,例如哈佛架构,转换将会失败。
以上是为什么 C/C 中函数和数据指针不总是兼容?的详细内容。更多信息请关注PHP中文网其他相关文章!