От чего зависит размер указателя в C++ на различных платформах?
В соответствии со стандартом C++, размер указателя зависит от конкретной реализации компилятора и не связан напрямую с разрядностью используемой платформы. В рамках же конкретной реализации стандарта, размер указателей различных типов (указатели на объекты, указатели на функции и т.п.) также может быть различным.
Однако на большинстве современных ОС общего назначения (настольные UNIX совместимые системы, MS Windows) используются модели данных, в которых размер указателя соответствует разрядности адресной шины у архитектуры этих платформ. Ширина шины адреса определяет объём адресуемой памяти. Например, если ширина адресной шины составляет 32 бит, и размер слова памяти равен одному байту (минимальный адресуемый объём данных), то объём памяти, который можно адресовать, составляет 2^32 байт, что и определяет оптимальный размер указателя для такой платформы.
Библиографический список
- Assembla.com. Type sizes.
- Обсуждение на Stackoverflow.com. Why the size of a pointer is 4bytes in C++?
- Терминология. Модель данных.
- Андрей Карпов. Что такое size_t и ptrdiff_t.
- База знаний. Почему 64-битные операционные системы используют для адресации только 48-битные адреса
0