Non puoi controllare la condizione di uscita del while in questo modo

codice:
while(str[i+1])
perché se hai n parole, quando i avrà raggiunto valore n-1 andrai ad accedere ad un'area di memoria che non hai allocato e sul cui valore non sai nulla. Al massimo dovresti allocare spazio per una stringa in più, scriverle una stringa convenzionale (ad esempio "end") e impostare il predicato del while così

codice:
while (strncmp(str[i+1], "end", 3)
ma fai molto prima a passare alla funzione anche il numero delle stringhe allocate ("cont") e a riscrivere il while così

codice:
while (i < cont - 1)
codice:
void funz_ord(char* str[], int, char*);
...
funz_ord(stringa, cont, swap);
...
void funz_ord(char* str[], int cont, char vect[15])
{
...
while (i < cont - 1) {