違いは、指している領域の種類。
free()すべきなのは動的に確保した領域のみ。




ちなみに malloc() して strcpy()、なんてダルイことをせずに、
strdup() または _strdup() を使え。