Would this not be necessary in C? I've not written C since that one semester in college, so I'm having a hard time imagining how C handle this differently.
It depends. Copying my response from farther down in the thread:
>In C, you're supposed to listen for a "destroy" event on the output and then in the handler you would delete all your references to the object.
If this wasn't satisfactory for whatever reason, then you could implement it as a weak pointer and check for null every time, but you wouldn't have to.