У меня есть такая структура,
typedef struct Player {
char *name;
char *heroID;
char *heroName;
int slotNo;
} Player;
Затем я определяю его как статически распределенный массив
Player players[10];
Моя программа может завершиться, когда я не полностью выделил все поля char*
каждой структуры Player
в players
, и я решил, что освободлю любую выделенную память перед выходом, даже если современные операционные системы не работают. не требуется, потому что это хорошая практика программирования.
Однако я не могу просто просмотреть циклы players
, free(player[i].name)
и т. Д., Поскольку они могут быть неинициализированы.
Является ли единственный способ обойти эту проблему, вручную инициализировать каждый указатель на символ NULL после того, как я определил массив, а затем при освобождении памяти проверить, является ли указатель NULL или нет, чтобы решить, следует ли мне его освобождать?
Если это так, каков наилучший способ инициализации, для циклического и ручного назначения или определения значений, когда я объявляю массив игроков с помощью фигурных скобок. Или есть другой способ?