Earlier quoted context omitted.
Interesting, but maybe I'm missing something here. If I just want automatic deallocation, why would I use bdwgc instead of using "vanilla" smart pointers from standard C++?
It significantly predates the C++11 standard. Most of the smartpointers in the modern C++ standard weren't official until TR1 in 2003; even then, a lot of compilers took a long time to catch up. Prior to 2003, the only smartpointer in the C++ standard was std::auto_ptr, which had some really unpleasant semantics. There were two basic choices: go with a smartpointer library like Boost or Loki, or go with the Boehm-Dem…
In my recollection, smart pointers were a fairly common C++ idiom in the early 1990s. Ref-counted shared_ptr and scoped_ptr were even proposed in 1994 for standardization, but didn't quite make it (scoped_ptr mutated into auto_ptr). There were also cow, deep-copying, intrusive, and ref-linked smart pointers. It was easy to write your own smart pointer, while GC was something alien and magic.