Из-за спецификаций для x64 вы можете зависеть от указателей пользовательского пространства, всегда вписывающихся в IntPtr
.Вы не можете зависеть от меньшего пространства.Процессор может получить больше адресных строк в будущем.Когда это происходило между Windows 8 и Windows 8.1, флаг обратной совместимости не добавлялся.
На самом деле вы получили как положительные, так и отрицательные указатели в x86, но хранение указателей в IntPtr
все равно работало из-за отсутствия людей-land в 0x7FFF0000
и нулевой диапазон ловушек в 0x00000000
.
Я не думаю, что вы пытаетесь делать помеченные указатели, но если вы это делаете, единственный приемлемый способ сделать помеченные указатели этонижние два бита.