すみません、質問させてください。

a = (char *)malloc(30);
b = (char *)malloc(30);

strcpy(a, "abcde");
strcpy(b, "ABCDE");

a = b;

と、こうした場合、最初のaの値のメモリは自動開放になるのでしょうか?
リンク切れの状態でメモリに存在するんでしょうか?