This leaks: (defclass foo () ((p :initform (#_malloc 4096)))) (defmethod ccl:terminate ((f foo)) (#_free (slot-value f 'p))) (loop (make-foo)) Even if you force a GC: (loop (dotimes (i 100000) (make-foo)) (gc)) it still leaks. But it seems like it ought not to. Is this a bug, or am I doing something wrong? rg