Это зависит от того, откуда взялись эти указатели и кому они принадлежат.
Если они были выделены динамически, и узел владеет ими, то вы должны освободить их перед освобождением массива.
Если они были динамически размещены, но находились в другом месте, их соответствующие владельцы должны освободить их позже.
Если они не были распределены динамически, вы вообще не должны их освобождать.
Если у вас есть комбинация из трех, у вас проблемы.
Вы также должны выделить ее с помощью sizeof(char*)
,или sizeof(*head->word_ptrs)
, а не sizeof(Node)
.
Хотя, если размер всегда равен десяти, вы также можете использовать массив:
typedef struct node{
char *word_ptrs[10];
int value;
struct node *next;
} Node;