Приведенный ниже код дает сбой, потому что не каждая позиция в структуре имеет данные.
Нет, сбой не происходит из-за передачи нулевого указателя на free()
. Если вы передадите нулевой указатель, ничего не произойдет, см. документацию.
Какая ошибка выбрасывается? Также покажите нам свой код инициализации, то есть как вы распределяете faces
и все, что находится над ним? Вероятно, вы передаете некоторые плохие / неинициализированные данные в free()
.
Кстати, из-за того, как вы задали этот вопрос, я полагаю, что вы думаете, что простое объявление массива заполнит каждый элемент NULL
. Это не тот случай, они могут быть заполнены чем угодно, и если вы передадите это free
, вы потерпите крах (если вам повезет).