Dynamic Aliens are allocated using the malloc library, so foreign code can call free on the result of make-alien, and Lisp code can call free-alien on objects allocated by foreign code.
[Macro]
alien: make-alien type size
This macro returns a dynamically allocated Alien of the specified type (which is not evaluated.) The allocated memory is not initialized, and may contain arbitrary junk. If supplied, size is an expression to evaluate to compute the size of the allocated object. There are two major cases:
If supplied, size is used as the first dimension for the array.(defvar *foo* (make-alien (array char 10)))(type-of *foo*) (alien (* (array (signed 8) 10)))
(setf (deref (deref foo) 0) 10) 10
[Function]
alien: free-alien alien
This function frees the storage for alien (which must have been allocated with make-alien or malloc.)
See also with-alien (page ), which stack-allocates Aliens.