とりあえず
char* str[10]
をゼロクリアしてから使え。

あとは終了時とmallocする前にNULLで無ければfreeするような処理書いとけばいいんじゃね?