Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Применение malloc и realloc
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
kt368
Здравствуйте!
Хочу использовать динамический массив, содержащий структуры. Этот массив находится внутри другой структуры (это, наверно, не важно). Количество элементов массива заранее неизвестно. Как я вычитал, для этого нужно использовать функцию realloc при добавлении нового элемента в массив. Но когда я добавляю в код вот эти строки - описание структуры данных и выделение памяти
Код
typedef struct {float k; float b; float Zmin;} Zarray_t;
typedef struct {float k; float b; float PHmin;} PHarray_t;
typedef struct {
    uint32_t     gZmin;
    uint32_t     gZmax;
    uint32_t     gPHmin;
    uint32_t     gPHmax;
    Zarray_t     Zarray[nF_cal-1];
    PHarray_t    PHarray[nF_cal-1];
} CalDataForF_t;
typedef struct {
    CalDataForF_t     *CalDataForF;
    uint32_t          freq[nF_cal];
} CalData;
в хедер и
Код
CalData_str.CalDataForF=malloc(sizeof(CalDataForF_t));
в тело main() и пытаюсь пошагово походить по программе, зашитой в МК, то я даже в main не захожу, время идёт (смотрю в Keil'e), а до брейкпоинта, находящегося на main() я не дохожу.
Читал здесь, что malloc и realloc используют кучу, и что её нужно предварительно инициализировать. Подскажите, пожалуйста, как её правильно инициализировать. Или подскажите в чём проблема, если она не в куче.

Заранее спасибо.
kt368
Сам спросил - сам ответил.
Проблемы исчезли при выделении памяти для кучи (в файле startup_LPC17XX.c - проц LPC1758, Keil). В файле было указано
Код
Heap_Size       EQU     0x00000000
исправил на
Код
Heap_Size       EQU     0x00001000
Все начало работать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.