And if the heap manager fragments it's reasonable to assume that it's not deeply integrated with the OS, and that it's forced to copy data around whenever it resizes. That has a significant speed penalty, plus can also leave unwiped data in RAM which is a potential security hazard (which obviously also applies to strings).
Most do copy around afaik, since blocks won't be page aligned etc. I think it is more a tunable, how much extra space do you allocate/leave for future expansion of a block? Space/speed tradeoff......
In this case cmem wins, but it might use more memory overall.