|
В какой тип читать байты с файла |
|
|
|
Oct 24 2017, 19:31
|
Группа: Участник
Сообщений: 10
Регистрация: 11-09-16
Пользователь №: 93 305

|
Люди с опытом в С в keil, подскажите, есть файл на sd (размер может быть различным), нужно его читать в самом старте и куда-то писать, потом эти данные активно используются. Если бы разговор был о каком нить C#,Delphi,VB,... я бы однозначно читал бы в динамический массив, но вот в случае C на stm32 камне возникли сомнения. Имеет ли право следующий код считаться рабочим, код работает, проверял в отладчике. Но вот как отследить - хватит ли свободной памяти под массив, если допустить, что файлов может быть несколько, то это может быть проблемой. Или может есть другие варианты, без массивные. Можно конечно постоянно держать открытым файл и читать из него данные, но файл на sd, и если sd слетит по разным причинам, то все - приехали. Поэтому sd хотел задействовать на начальном этапе - при старте, потом можно вообще sd отмонтировать, и уже работать со считанными данными. Спасибо! Код uint8_t *adata; adata = (uint8_t *) malloc(РазмерМассива*sizeof(uint8_t)); adata[0] = 9; adata[1] = 8; adata[2] = 7; adata[3] = 6; ... // for(i=0;i<10;i++){ uint8_t x = adata[i]; }
|
|
|
|
|
 |
Ответов
|
Oct 25 2017, 11:11
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(Сергей Борщ @ Oct 25 2017, 15:37)  И в нем следить, где кончился один файл и начался другой. Ой, получился самописный менеджер динамической памяти. Какой конфуз... all_files_start+size_of_file1 Цитата(xmailer @ Oct 25 2017, 15:50)  общий массив какого размера? по максималке, но может быть и 100байт, а может 100Кбт. Этим рулит пользователь. И можно попасть в ситуацию что выделенный массив мал по размеру или просто живет, отъедает память. это можно использовать на относительно статичных данных. я уже год сижу над этой проблемой. единственное решение которое нашел - динамическое выделение памяти. но я против динамики поэтому... продолжаю сидеть. ну или можно перейти на другой камень. скажем у меня сейчас камень с 128 мега памяти. так я там создал FAT, директории и гоняю несколько десятков файлов с карты в память и обратно.
Сообщение отредактировал Jenya7 - Oct 25 2017, 11:21
|
|
|
|
|
Oct 25 2017, 12:22
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Jenya7 @ Oct 25 2017, 14:11)  но я против динамики поэтому... продолжаю сидеть. "Мыши кололись, плакали, но продолжали жрать кактус". xmailer, смело используйте malloc. Слухи о его вреде сильно преувеличены.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
xmailer В какой тип читать байты с файла Oct 24 2017, 19:31  AlexandrY Цитата(Сергей Борщ @ Oct 25 2017, 12:45) ... Oct 25 2017, 10:19  Огурцов Цитата(Сергей Борщ @ Oct 25 2017, 09:45) ... Oct 25 2017, 13:14 xmailer Поясню алгоритм работы, почему возник данный вопро... Oct 25 2017, 10:50 AlexandrY Цитата(xmailer @ Oct 25 2017, 13:50) Пояс... Oct 25 2017, 10:59  xmailer Цитата(AlexandrY @ Oct 25 2017, 14:59) Во... Oct 25 2017, 11:20 Огурцов Цитата(xmailer @ Oct 25 2017, 10:50) отъе... Oct 25 2017, 13:17 XVR Если вы не собираетесь менять длинну этого масива ... Oct 25 2017, 10:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|