Check with gcmemalloced()
My guess is your sndfx instance is local so is no longer in scope when the function finishes so should be reclaimed next GC run.
My guess is your sndfx instance is local so is no longer in scope when the function finishes so should be reclaimed next GC run.