如题
如题
winsock api参数有很多带far指针,far有什么用?
答案:2 悬赏:30 手机版
解决时间 2021-04-11 07:13
- 提问者网友:書生途
- 2021-04-10 07:27
最佳答案
- 五星知识达人网友:空山清雨
- 2021-04-10 07:39
由于PC机的存储器地址是由段地址和偏移地址组合而成,每个段不能超过64K字节地址,因此同一个段内的地址存取, 仅用偏移地址就可以实现,用指针时,16位就可以了。称为近程指针near,当要在另一个段内取数据时,就要跨越段, 即要指明存取段的段地址和偏移地址,这时段地址寄存器所存段地址要变,因此在使用指针指向另一个段内地址时, 就要用32位表示(即段地址:偏移地址),这类指针,称为远程指针,是far型. far为远程指针 远程指针是指32位的指针,它表示段地址:偏移地址,如定义远程指针P指向B500段的2号地址,即B500:0002,则可写作: char far*p=(char far*)0xB5000002; 因而用远程指针可以指向任何的数据段内地址,在大数据内存模式下,当跨越段进行数据存取时(即存取超过64K的数据),可以采用 远程指针。当使用far型指针时,因要进行跨段寻址,数据段寄存器的值要更换,因而加长了程序的执行时间。 另外远程指针的值在进行加减时,只有偏移的地址部分进行运算,段地址不参加运算,即段地址不变,因此会出现折回现象。 win32中采用的是flat memory,也就是说所有段的基地址都是0,偏移量都是32位。所以偏移量本身就可以认为是线性地址了。既然段的偏移量都是32为大,就无所谓far和near了
全部回答
- 1楼网友:慢性怪人
- 2021-04-10 09:09
这个例子没人看明白了吗?这个例子没人看明白了吗?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯