leggi: http://www.cplusplus.com/reference/c...string/strcat/

la stringa di destinazione deve essere allocata, a priori, in modo tale da essere sufficientemente lunga da poter contenere tutta la sequenza di caratteri concatenati che vuoi metterci

le tue stringhe non hanno una dimensione sufficiente, il risultato è che la stringcat cerca comunque di scrivere nella variabile path, ma poiché non c'è allocato abbastanza spazio finisce con lo scrivere in aree di memoria non previste e in cui non ha il permesso di agire -> segmentation fault