Yes, but redefining a function and GC are not.
> There are easy ways to build a GC in portable C as well, of course, if less performant.
No, because you can't walk the stack. Also pointer aliasing.
[UPDATE] I just realized that I was wrong about redefining functions in C. Not only is it possible, you can actually do it with currently available technology using dynamically linked libraries. But I have never seen anyone actually do this (which is why it didn't occur to me).