MSDOS FAR-указатели имели подобные проблемы, которые обычно покрывались «умным» использованием перекрытия регистров сегмента с регистром смещения в реальном режиме. Эффект был в том, что 16-битный сегмент был смещен влево на 4 бита и добавлен к 16-битному смещению, которое давало 20-битный физический адрес, который мог адресовать 1 МБ, что было достаточно, потому что все знали, что никому не понадобится целых 640 КБ ОЗУ. ; -)
В защищенном режиме регистр сегмента фактически был индексом в таблице дескрипторов памяти. Типичная среда выполнения, расширяющая DOS, обычно организует вещи так, что многие сегменты могут обрабатываться так же, как в реальном режиме, что облегчает перенос кода из реального режима. Но у него были некоторые недостатки. Прежде всего, сегмент до выделения не был частью выделения, и поэтому его дескриптор может быть даже недействительным.
На 80286 в защищенном режиме простая загрузка регистра сегмента со значением, которое приведет к загрузке недопустимого дескриптора, вызовет исключение, независимо от того, был ли дескриптор фактически использован для ссылки на память.
Подобная проблема потенциально возникает на один байт после выделения. Последний ++ в указателе мог быть перенесен в регистр сегмента, что привело к загрузке нового дескриптора. В этом случае разумно ожидать, что распределитель памяти мог бы организовать один безопасный дескриптор за концом выделенного диапазона, но было бы неразумно ожидать, что он устроит что-то большее.