If you want to use a standard malloc / free implementation (dlmalloc etc.) then dead object need to be known, yes.
But the malloc library could be fully integrated into the GC mechanism. In this case, there is no need. That's probably much easier, and faster, because the malloc can be simplified to bumping a pointer.