Вот моя конечная цель:Как объявить огромный массив постоянного
Я хочу, чтобы иметь возможность генерировать все возможные изображения, доступные для данного размера в любой возможной глубине цвета.
В некотором смысле это не очень сложно. Мне в основном приходится выполнять итерацию на каждом пикселе матрицы/матрицы, где изображение представлено и повторять снова для каждого возможного значения для данного пикселя.
В реальной жизни ... Это невозможно, чтобы их можно было просматривать, потому что существует слишком много возможностей даже для монохромного изображения, а для хранения это то же самое, даже небольшой размер изображения генерирует впечатляющее количество файлов и жесткий диск легко насыщаются.
Так что я делаю это в основном для удовольствия от этого, и потому что я скоро смогу получить доступ к кластеру и захочу попробовать этот старый проект на нем. Но старый проект использовать SFML и не очень эффективно (и, SFML в терминале не действительно отличная идея)
Теперь проблема:
Поскольку я сильно использовать каждый разные значения пикселя на каждой итерации я хочу установить ее на глобальную константу, которая будет содержать все возможные значения одного. Так что это что-то вроде массива 16M-массива unsigned char [3]. Это дает что-то вроде 50 МБ ОЗУ, используемого только для него, поэтому не слишком громадное управление и, прежде всего, набор постоянных значений, которые не нужно генерировать «на лету» и приятный (я думаю?) Выигрыш времени и эффективности, поскольку данные используются постоянно.
Проблема заключается в том, что этот массив огромен, только если он набрал требуемый кусок пространства (~ 640 МБ), и я задаюсь вопросом, является ли размер этого файла проблемой, когда я пытаюсь скомпилировать приложение при его вызове , Я получаю сообщение об ошибке с из памяти, выделяющей байты xxxx, есть ли лучший способ получить эту настройку массива? Или идея не так хороша, как я себе представляю, и есть лучший способ сделать то, что я хочу?
Генерирование содержимого массива в lauch было моей второй идеей, но для этого требуется не так много времени, я бы предпочел, чтобы он проводился в реальном поколении изображений.
Возможно, вы должны спросить себя: «Неужели мне нужен массив, который большой, или есть лучший способ?» –
Проверьте 'mmap'. Он позволяет отображать содержимое существующего файла в память. Вы можете сохранить свои значения в 64-мегабайтном файле и отобразить его в память при запуске программы. – Marian
@JohnnyMopp У меня есть каждое из значений thets несколько раз во время выполнения приложения, я не _need_, чтобы иметь его, и могу просто выбрать их, когда это необходимо, из одного или нескольких циклов или что-то в этом роде, но для эффективности, если это возможно уже в памяти, это еще лучше для меня – Kane