In that case C++ has garbage collection too with std::shared_ptr. I guess 1 is a count too so also with std::unique_ptr.
Library types like std::shared_ptr don't really count to say that a language has a GC, because their use, specially their correct use, is not enforced by the compiler.
Although, there are conservative GCs for C that replace malloc () and make fre () a nop, they cannot release all memory properly due to C semantics.