Exec provides the routines AllocEntry() and FreeEntry() to allocate multiple memory blocks in a single call. AllocEntry() accepts a data structure called a MemList, which contains the information about the size of the memory blocks to be allocated and the requirements, if any, that you have regarding the allocation. The MemList structure is found in the include file <exec/memory.h> and is defined as follows: struct MemList { struct Node ml_Node; UWORD ml_NumEntries; /* number of MemEntrys */ struct MemEntry ml_ME[1]; /* where the MemEntrys begin*/ }; Node allows you to link together multiple MemLists. However, the node is ignored by the routines AllocEntry() and FreeEntry(). ml_NumEntries tells the system how many MemEntry sets are contained in this MemList. Notice that a MemList is a variable-length structure and can contain as many sets of entries as you wish. The MemEntry structure looks like this: struct MemEntry { union { ULONG meu_Reqs; /* the AllocMem requirements */ APTR meu_Addr; /* address of your memory */ } me_Un; ULONG me_Length; /* the size of this request */ }; Sample Code for Allocating Multiple Memory Blocks Result of Allocating Multiple Memory Blocks Multiple Memory Blocks and Tasks Summary of Multiple Memory Blocks Allocation Routines
[Back to Amiga Developer Docs]