Allocates memory for a list of foreign objects, executes a list of forms which may use the objects across the scope of the macro, and then deallocates the foreign objects.
with-dynamic-foreign-objects bindings &body body => last
A list of variable bindings.
A symbol to be bound to a foreign type.
A foreign type descriptor to be bound to the variable var .
A list of forms to be executed with bindings in effect.
A form to be executed.
The function with-dynamic-foreign-objects
binds variables according to the list bindings , and then executes body . Each element of bindings is a list which binds a symbol to a pointer which points to a locally allocated instance of a foreign type. The lifetime of the bound foreign objects, and hence the allocation of the memory they take up, is within the scope of the with-dynamic-foreign-objects
function.
Any object created with allocate-dynamic-foreign-object
within body will automatically be deallocated once the scope of the with-dynamic-foreign-objects
function has been left.
Only standard foreign types can be bound using bindings . Foreign pointer types should be allocated using allocate-dynamic-foreign-object
.
An example using with-dynamic-foreign-objects
and allocate-dynamic-foreign-object
is given in An example of dynamic memory allocation.