На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> vector и переход от 32 бит к 64 , Перенес проект из 32 бит в 64 бита, функция size() возвращает 8-ми байтовую переменную, но max_size() меньше!
    Перенес проект из 32 бит в 64 бита, функция size() возвращает 8-ми байтовую переменную, но max_size() меньше! max_size() возвращает:
    ExpandedWrap disabled
      768614336404564650  -  десятичное
      AAA AAAA AAAA AAAA‬  -  тоже шестнадцатеричное

    Почему не F а А? Для 32 бит FFFFFFFF и 4294967295! И почему длина меньше на 4 бита?
      Нужно смотреть пример.
      max_size Вычисляется по формуле и зависит от типа переменной в векторе и от системы.

      On 32 bit System.
      std::vector<char>::max_size() returns 232-1, size of char — 1 byte
      std::vector<int>::max_size() returns 230-1, size of int — 4 byte
      std::vector<double>::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-битным адресным пространством.
      Сообщение отредактировано: MaIron -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0165 ]   [ 16 queries used ]   [ Generated: 19.04.24, 23:19 GMT ]