allocate-instance class &rest initargs => instance

Arguments and values:

class -- A class metaobject.

initargs -- A list of alternating initialization argument names and values.

instance -- A newly allocated instance of class.


This generic function is called to create a new, uninitialized instance of a class. The interpretation of the concept of an ``uninitialized'' instance depends on the class metaobject class.

Before allocating the new instance, class-finalized-p is called to see if class has been finalized. If it has not been finalized, finalize-inheritance is called before the new instance is allocated.


allocate-instance (class standard-class) &rest initargs
allocate-instance (class funcallable-standard-class) &rest initargs
allocate-instance (class built-in-class) &rest initargs

Comments and remarks:

See also the description of this function in the Common Lisp HyperSpec.

The description above suggests that allocate-instance checks to see whether the class is finalized and if not, calls finalize-inheritance. However, the initargs passed to allocate-instance should be the defaulted initargs, and computing those initargs requires the class to be finalized. Therefore, finalize-inheritance must be called before allocate-instance is called. Peeking at PCL source confirms that finalize-inheritance is called from make-instance before allocate-instance is called.