char*a;やchar*a="efg"だと、
"abc"を入れるアドレスを作り、"abc"を入れて、
strcpy(a,"abc");で、"abc"のアドレスをaが参照し(aと"abc"は同アドレス)、
aの元の値とアドレスはゴミとして残ってしまう。
でOKですか?
AccessViolationでるから、まんまでは確認できなかったですけれど。