COMについて勉強中です

D3D_COM_HOGE* temp_com_pointer = com_pointer_a;
com_pointer_a = com_pointer_b;
//ここでなんらかの処理
com_pointer_a = temp_com_pointer;

大雑把に言うと以上のような処理をしたいのですが、こういう場合もやはり、逐一

D3D_COM_HOGE* temp_com_pointer = com_pointer_a;
temp_com_pointer->AddRef();

com_pointer_a->Release();
com_pointer_a = com_pointer_b;
com_pointer_a->AddRef();
//ここでなんらかの処理
com_pointer_a->Release();
com_pointer_a = temp_com_pointer;
com_pointer_a->AddRef();
temp_com_pointer->Release();
temp_com_pointer = NULL;

と、するべきなのでしょうか?