Сколько памяти занимают 1000 общих указателей? - PullRequest
4 голосов
/ 07 мая 2019
  1. Сколько памяти занимает (например) 1000 общих указателей?
  2. это 16 x 1000 байт?
  3. Отличается ли это для 32- и 64-битной системы?

1 Ответ

6 голосов
/ 07 мая 2019

В типичной реализации std::shared_ptr содержит только два указателя .

Таким образом, 1000 общих указателей занимают 1000 * 2 * sizeof(pointer) байтов памяти.

  • Размер указателя составляет 4 байта во всех 32-битных системах, которые следуют модели данных ILP32.
  • Размер указателя составляет 8 байт в 64-разрядных системах, которые следуют модели данных LP64 (большинство Unix и Unix-подобных систем) или модели данных LLP64 (Microsoft Windows x86-64).

Примечание. Размер управляющего блока (который зависит от реализации) и размер объекта, к которому принадлежит общий указатель, не являются частью этого.

...