[cdev] Задача_6. гр 135
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Пн Сен 20 17:20:24 MSK 2010
Не совсем "лучше".
По смыслу получается что если очередь освободили то это ошибка?
Проверку на NULL queue->heap пожалуй не стоит делать, т.к. там всегда
память выделяется в prioq_new(). Это будет смущать тех, кто код будет
читать, как будто-бы в каких-то случаях там может оказаться нулевой
указатель.
Пробелы всё же надо ставить. Есть ещё один нюанс. В Си `*' в объявлениях
относится к имени идентификатора. Лучше их там и оставлять.
int** a, b, c;
По смыслу у вас указателем на указатель является только `a', переменные
`b' и `c' это целые. Однако такое оформление заставляет нас считать их
тоже указателями, хотя это не так.
int **a, b, c;
Так было бы корректнее. Посему в объявлениях типов лучше звёздочки
прицеплять к имени идентификатора. Это принятая практика, хотя дело
ваше, просто имейте в виду что чтение объявлений усложняется.
--
Г.А.
jam пишет:
> а лучше так.
> /*
> void
> prioq_free (struct prioq** queue)
> {
> if (*queue == NULL) {
> fprintf (stderr, "%s:The queue is free\n", __func__);
> return;
> }
> if ((*queue)->heap != NULL) {
> free ((*queue)->heap);
> }
> free (*queue);
> *queue = NULL;
> fprintf (stderr, "%s:The queue is free\n", __func__);
> }
> */
Подробная информация о списке рассылки cdev