[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