Мне нужно динамически создать массив структур, и я не знаю размер при выполнении команды malloc.Поэтому я подумал, что могу использовать realloc каждый раз, когда мне нужна другая структура!Например, этот код:
main:
int main(void) {
flights *flight_list = NULL;
int numFlights = 0;
numFlights = load_flights(&flight_list);
/* output flights. Problem: Only first flight is there, the second is not allocated! */
Вот функция:
short load_flights(flights **flight_list) {
flight_list[0] = calloc(1, sizeof(flights));
flight_list[0]->price = 69;
flight_list[0] = realloc(*flight_list, sizeof(flights)*2);
flight_list[1]->price = 70;
return 2; //num of flights-structs
Проблема в том, что на самом деле должны быть созданы 2 элемента, но только 1элемент есть - проверьте этот скриншот отладки:
Как видите, flight_list[0]
есть, но flight_list[1]
нет!Но realloc должен делать эту работу?
Я что-то не так понимаю?