-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


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

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку