For special advanced applications, AllocAbs() is provided. Using
AllocAbs(), an application can allocate a memory block starting at a
specified absolute memory address. If the memory is already allocated or
if there is not enough memory available for the request, AllocAbs()
returns a zero.
Be aware that an absolute memory address which happens to be available on
one Amiga may not be available on a machine with a different configuration
or different operating system revision, or even on the same machine at a
different times. For example, a piece of memory that is available during
expansion board configuration might not be available at earlier or later
times. Here is an example call to AllocAbs():
APTR absoluteptr;
absoluteptr = (APTR)AllocAbs(10000, 0x2F0000);
if (!(absoluteptr))
{ /* Couldn't get memory, act accordingly. */ }
/* After we're done using it, we call FreeMem() to free the memory */
/* block. */
FreeMem(absoluteptr, 10000);
[Back to Amiga Developer Docs]