Я понял, что адреса, которыми мы занимаемся в программах пользовательского пространства, - это адреса виртуальной памяти, а не адреса физической памяти. Блок управления памятью отобразит эти виртуальные адреса в фактические физические адреса.Почему размер указателя меньше, чем адресный размер виртуальной памяти?
Но на 32-битной машине я заметил, что размер указателя в основном составляет 32 бита, но в то время как процесс фактически может занимать более 4 ГБ, т. Е. Виртуальное адресное пространство программы адресуется более чем на 32- бит (для программы с 8 ГБ виртуального адресного пространства виртуальная память адресована 33 битами). Поэтому я не могу использовать указатели (размер которых всего 32 бита) в моей программе для доступа к ячейкам памяти после 4 ГБ.
Так почему же размер указателя составляет всего 32 бита и почему не больше, чем на 32-битных машинах? Что определяет размер указателя?
Просьба пояснить, как вы думаете, что адресное пространство памяти процесса может быть больше, чем физическое пространство памяти. – duffymo
@duffymo представьте себе компьютер с 4 ГБ оперативной памяти и выполнив 64-битное приложение (64-битный курс курса) с использованием 8 ГБ: тогда вы будете использовать 64-битные адреса (указатели), хотя у вас есть только 4 ГБ RAM, но обилие виртуальной памяти – nabuchodonossor
@shiva: Я думаю, что это не конкретный вопрос программирования, где пример sode поможет, поэтому SO - это не то место – nabuchodonossor