Это неверно:
void AddNote(NOTE * Notes, int NotesCount, NOTE * Temp)
{
Notes = (struct NOTE *) realloc(Notes, (NotesCount + 1) * sizeof(struct NOTE));
memcpy(Notes + NotesCount, Temp, sizeof(struct NOTE));
}
Заметки - это локальная переменная, которая содержит адрес вашего первого NOTE
объекта.Но когда функция возвращается, это значение теряется.Вы должны вернуть новое значение, так как C не имеет ссылок:
NOTE* AddNote(NOTE * Notes, int NotesCount, NOTE * Temp)
{
Notes = (struct NOTE *) realloc(Notes, (NotesCount + 1) * sizeof(struct NOTE));
memcpy(Notes + NotesCount, Temp, sizeof(struct NOTE));
return Notes;
}
for(i = 0; i < 4; i++)
{
ShowInputDialog(Temp);
BLOC_NOTE = AddNote(BLOC_NOTE, NotesCount++, Temp);
}
В C ++ этого было бы достаточно:
void AddNote(NOTE * &Notes, int NotesCount, NOTE * Temp)
{
Notes = (struct NOTE *) realloc(Notes, (NotesCount + 1) * sizeof(struct NOTE));
memcpy(Notes + NotesCount, Temp, sizeof(struct NOTE));
}