谁能告诉我 C 中 far
指针和 near
指针的区别?
最佳答案
在 16 位 x86 分段内存架构上,四个寄存器用于引用各自的段:
- DS → 数据段
- CS → 代码段
- SS → 堆栈段
- ES → 额外段
此架构上的逻辑地址写为segment:offset
。现在回答问题:
附近指针引用(作为偏移量)当前段。
远指针使用段信息和偏移量跨段指向。因此,要使用它们,必须将 DS 或 CS 更改为指定值,内存将被取消引用,然后恢复 DS/CS 的原始值。请注意,对它们的指针运算不会修改指针的段部分,因此溢出偏移量只会将其环绕。
然后是巨大的指针,它们被规范化为具有给定地址的最高可能段(与远指针相反)。
在 32 位和 64 位架构上,内存模型使用不同的段,或者根本不使用段。
关于c - 远指针和近指针有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749904/