Как включить в программу очень большой иниц. массив?

Модератор: Модераторы разделов

max100
Сообщения: 12

Как включить в программу очень большой иниц. массив?

Сообщение max100 »

Как включить в программу на Си очень большой иниц. массив?

Понятно как мелкий

char my_short_var[4] = {0x2d, 0xc0, 0xa0, 0xe1};

а если массив 4Мбайт
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как включить в программу очень большой иниц. массив?

Сообщение drBatty »

max100 писал(а):
23.11.2013 19:13
Как включить в программу на Си очень большой иниц. массив?

man 3 malloc
man 3 memset
man 3 fread

Не нужно делать большие статические массивы. Да и вообще глобальные переменные не нужны.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

max100
Сообщения: 12

Re: Как включить в программу очень большой иниц. массив?

Сообщение max100 »

Вы не поняли, мне в программу 4Мб данных нужно включить. Мне это нужно именно статически.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как включить в программу очень большой иниц. массив?

Сообщение drBatty »

max100 писал(а):
23.11.2013 19:18
Вы не поняли, мне в программу 4Мб данных нужно включить. Мне это нужно именно статически.

нет, это вы не поняли. Этого делать НЕ НУЖНО.

В рамках C это не решаемо, но в принципе -- можно сделать такой obj файл, а потом его линкером прилинковать. Но сразу скажу -- за такое руки оторвут, канделябром по башке, и это только начало...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

max100
Сообщения: 12

Re: Как включить в программу очень большой иниц. массив?

Сообщение max100 »

Ну мне нужно, не так уж много 4Мб. Собственно это данные нужные для работы программы, они не изменяются в процессе работы. Руки отрывать никто не будет.

Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как включить в программу очень большой иниц. массив?

Сообщение drBatty »

я не знаю ответа на этот вопрос.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
ieleja
Сообщения: 307
ОС: Debian 9, macOS, Windows

Re: Как включить в программу очень большой иниц. массив?

Сообщение ieleja »

ad infinitum
Спасибо сказали:

max100
Сообщения: 12

Re: Как включить в программу очень большой иниц. массив?

Сообщение max100 »

Нашел программу превращающую любой бинарный файл в массив

Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как включить в программу очень большой иниц. массив?

Сообщение drBatty »

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как включить в программу очень большой иниц. массив?

Сообщение eddy »

Я могу себе представить только одну ситуацию, когда может такой ужас понадобиться: внедрить шрифты в прошивку встраиваемого приложения.
В этом случае можно просто написать программку-обертку, которая будет с файла считывать данные, преобразовывать их, согласно endianess целевой архитектуры и загонять в массив в файле out.c. Наколеночное решение. Дешево и сердито.

Пы.Сы. Таки с большими файлами я сделал бы по-человечески: записывать их на SD-карточку, при запуске железяки считывать и размещать в оперативе.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали: