1 бит для char, 4 байта для int, 8 байтов для double и т. Д. c ...
Это общие значения, но они зависят от архитектуры (для этот ответ , в наши дни продаются даже 9-битные архитектуры на байты).
Разве компьютер не может использовать символы или целые числа, занимающие место в памяти в настоящее время? и ссылаетесь на этот указанный c слот, когда он хочет использовать его повторно?
Хотя эта идея, безусловно, осуществима в теории, на практике накладные расходы слишком велики для простых данных, таких как символы: один символ обычно это один байт.
Если бы мы настроили систему, в которой мы выделяем память для символьного значения и обращаемся к нему только из строки, строка будет состоять из серии элементов, которые будут используется для хранения того, какой символ должен быть там: в C это будет указатель (вы встретите их в какой-то момент в вашем курсе), и обычно он имеет длину 4 или 8 байтов (32 или 64 bi ц). Предполагая, что вы используете 32-битный указатель, вы будете использовать 24 байта памяти для хранения строки таким сложным способом, а не 5 байтов, используя более простой метод (чтобы расширить этот ответ , вам потребуется еще больше метаданные, чтобы иметь возможность корректно изменять строку во время выполнения вашей программы).
Однако ваша идея хранения фрагмента данных и обращения к нему несколько раз существует в нескольких случаях:
- виртуальная память (вы столкнетесь с этим, если будете go к разработке ОС), где используется копирование при записи
- языки более высокого уровня (например, C ++)
- файловые системы, в которых реализована функция копирование при записи , например BTRFS
- , некоторые системы резервного копирования (например, borg или rsyn c), которые дедуплицируют файлы / чанки, которые они хранят
- Алгоритм сжатия в Facebook , где словарь малых общих кусочков данных используется для улучшения сотрудничества Коэффициент сжатия и скорость
В таких настройках, где хранится большое количество данных, стоит добавить относительный размер информации, необходимой для однократного хранения данных и обращения к ним несколько раз при одновременном улучшении времени копирования. сложность.