Для школьного задания на связанных списках я пишу базу данных людей, которые я реализовал двоичным деревом этой структуры:Realloc бинарное дерево - как обновить указатели
typedef struct TPeople {
TPeople * m_Parent_1;
TPeople * m_Parent_2;
int m_ID;
char * m_Name;
} TPEOPLE;
я создаю массив с кодом:
int allocated = 20;
TPEOPLE * data = (TPEOPLE*) calloc(allocated, sizeof (TPEOPLE));
И realocate с:
allocated *= 2;
data = (TPEOPLE*) realloc(data, allocated * sizeof (TPEOPLE));
memset(data + allocated /2,0,allocated/2 * sizeof (TPEOPLE));
Потому что каждый человек будет без ребенка для некоторых я сохранил их в массиве, иначе я бы не нашел их снова.
Но проблема возникает, поскольку размер по умолчанию для массива будет недостаточным для их хранения. Но когда я перераспределяю массив, все те родительские указатели указывают в старом расположении в уже свободной памяти.
Как решить эту проблему?
Благодаря Rfilip
Не могли бы вы разместить свои объявления о размещении и объявлении массива. –