vector и переход от 32 бит к 64
|
|
Среда, 03 Марта 2021 г. 13:03
+ в цитатник
MaIron: Нужно смотреть пример.
max_size Вычисляется по формуле и зависит от типа переменной в векторе и от системы.
On 32 bit System.
std::vector
::max_size() returns 232-1, size of char — 1 byte
std::vector::max_size() returns 230-1, size of int — 4 byte
std::vector::max_size() returns 229-1, size of double — 8 byte
max_size () - это теоретическое максимальное количество элементов, которое может быть помещено в ваш вектор. В 32-битной системе теоретически можно выделить 4 Гб == 2 ^ 32, что составляет 2 ^ 32 символьных значения, 2 ^ 30 значений int или 2 ^ 29 двойных значений. Казалось бы, ваша реализация использует это значение, но вычитает 1.
Конечно, вы никогда не сможете выделить такой большой вектор в 32-битной системе; у вас закончится память задолго до этого.
Нет никаких требований относительно того, какое значение возвращает max_size (), кроме того, что вы не можете выделить вектор большего размера.
В 64-битной системе он может вернуть 2 ^ 64-1 для char или может вернуть меньшее значение, потому что система имеет только ограниченное пространство памяти.
В любом случае 64-битные ПК часто ограничены 48-битным адресным пространством. https://forum.sources.ru/index.php?showtopic=420973&view=findpost&p=3845170
Метки:
Visual C++ / MFC / WTL
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-