Как включить в программу на Си очень большой иниц. массив?
Понятно как мелкий
char my_short_var[4] = {0x2d, 0xc0, 0xa0, 0xe1};
а если массив 4Мбайт
Как включить в программу очень большой иниц. массив?
Модератор: Модераторы разделов
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как включить в программу очень большой иниц. массив?
man 3 malloc
man 3 memset
man 3 fread
Не нужно делать большие статические массивы. Да и вообще глобальные переменные не нужны.
-
- Сообщения: 12
Re: Как включить в программу очень большой иниц. массив?
Вы не поняли, мне в программу 4Мб данных нужно включить. Мне это нужно именно статически.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как включить в программу очень большой иниц. массив?
нет, это вы не поняли. Этого делать НЕ НУЖНО.
В рамках C это не решаемо, но в принципе -- можно сделать такой obj файл, а потом его линкером прилинковать. Но сразу скажу -- за такое руки оторвут, канделябром по башке, и это только начало...
-
- Сообщения: 12
Re: Как включить в программу очень большой иниц. массив?
Ну мне нужно, не так уж много 4Мб. Собственно это данные нужные для работы программы, они не изменяются в процессе работы. Руки отрывать никто не будет.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как включить в программу очень большой иниц. массив?
я не знаю ответа на этот вопрос.
-
- Сообщения: 307
- ОС: Debian 9, macOS, Windows
-
- Сообщения: 12
Re: Как включить в программу очень большой иниц. массив?
Нашел программу превращающую любой бинарный файл в массив
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
-
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Как включить в программу очень большой иниц. массив?
Я могу себе представить только одну ситуацию, когда может такой ужас понадобиться: внедрить шрифты в прошивку встраиваемого приложения.
В этом случае можно просто написать программку-обертку, которая будет с файла считывать данные, преобразовывать их, согласно endianess целевой архитектуры и загонять в массив в файле out.c. Наколеночное решение. Дешево и сердито.
Пы.Сы. Таки с большими файлами я сделал бы по-человечески: записывать их на SD-карточку, при запуске железяки считывать и размещать в оперативе.
В этом случае можно просто написать программку-обертку, которая будет с файла считывать данные, преобразовывать их, согласно endianess целевой архитектуры и загонять в массив в файле out.c. Наколеночное решение. Дешево и сердито.
Пы.Сы. Таки с большими файлами я сделал бы по-человечески: записывать их на SD-карточку, при запуске железяки считывать и размещать в оперативе.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка