Why is the reference count of sink element 0 when it is disconnected from a pipeline

cfd new via gstreamer-devel <[email protected]> Thu, 5 Oct 2023 23:03:23 +0000 (UTC)
Newsgroups gmane.comp.video.gstreamer.devel
Message-ID <[email protected]>
I have a audio pipeline with a sink. When I switch audio devices, I want to replace the sink only. What I did in the code are,1. set pipeline state to NULL
1. disconnect sink element from the pipeline2. unref it <===problem here: reference count is 0 and can not unref it. Why?
3. create a new sink element and link it to pipeline4. set pipeline state to PLAYING
   the pipeline works fine with the new sink. But why can not the old sink be deleted? 
   thanks for your help,
   Joe