A method and apparatus for allocating computer memory for an aggregate data type
is provided, wherein that allocating is based on data that is separate from a type
definition. According to one technique, an instruction to construct an instance
of an aggregate data type is received. The aggregate data type (and therefore the
instance) includes an attribute. It is determined, based on data called a "Constructor
Descriptor", whether memory for that attribute is to be allocated in-line or out-of-line.
The Constructor Descriptor is separate from the type definition of the attribute.
Memory for the attribute is allocated in-line or out-of-line depending on the determination
made. Using this technique, memory allocation can be customized based on, for example,
the system resources of a specific computer system. This technique is applicable,
for example, to compilers and interpreters of object oriented or record oriented
languages. In certain embodiments, the Constructor Descriptor may be used to incrementally
construct or incrementally destroy instances of data types.