Опишите структуру PyObject в C. Каков минимальный оверхед по памяти для любого объекта?

В обычной 64-битной сборке CPython базовый PyObject содержит счётчик ссылок и указатель на тип: часто 16 байт заголовка. Это не универсальный полный размер любого объекта.

Короткий ответ

Что ответить на собеседовании

В обычной 64-битной сборке CPython базовый PyObject содержит счётчик ссылок и указатель на тип: часто 16 байт заголовка. Это не универсальный полный размер любого объекта.

Подробный разбор

Ответ с пояснениями

В обычной 64-битной сборке CPython базовый PyObject содержит счётчик ссылок и указатель на тип: часто 16 байт заголовка. Это не универсальный полный размер любого объекта.

PyVarObject добавляет размер переменного объекта, а конкретные типы — собственные поля. GC-метаданные, выравнивание и allocator увеличивают затраты; sys.getsizeof не считает всю достижимую память. Free-threaded и специальные сборки используют другое устройство заголовка. Поэтому минимальный overhead следует уточнять для версии, архитектуры и конфигурации CPython.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее