The differences are only relevant on 16 bit intel architectures
.
As far as virtual addresses is concerned, It has two components - a selector and an offset.
The selector is an index into a table of base addresses and offset is added onto that base address.
near pointers don't have a selector - they have an implied selector
. They can access 64k off the virtual address space.
far pointers have an explicit selector
. However when you do pointer arithmetic on them the selector isn't modified
.
huge pointers have an explicit selector
. When you do pointer arithmetic on them though the selector can change
.
Please Refer this link for more info:
http://www.codeproject.com/Answers/103115/near-vs-far-vs-huge-pointers/?cmt=11086#answer1