When you create start
node you leave array
members uninitialized , but later in add
function you operate on them. For the first time in this line
current = current->array[word[i] - 'a'];
I think following should solve the issue :
trie* start = malloc(sizeof(trie));
for(int i = 0; i < 28; ++i)
{
start->array[i]=NULL;
}