Memory Manager Library
This library provides routines for manipulating dynamic memory allocation. Dynamic memory allocation (also known as heap-based memory allocation) is the allocation of memory storage for use in a program during the runtime of that program.
Dynamically allocated memory exists until it is released. This is in contrast to static memory allocation, which has a fixed duration. It is said that an object so allocated has a dynamic lifetime.
The heap memory size can be configured in thep project settings. Also, user can override heap memory size in the code, by setting the HEAP_SIZE
constant.
Library Routines
MM_Init
Prototype |
void MM_Init(); |
---|---|
Description |
Sets Heap size. |
Parameters |
None. |
Returns |
Nothing. |
Requires |
Nothing. |
Example |
MM_Init(); // set Heap size |
Notes |
None. |
Malloc
Prototype |
void *Malloc(unsigned long Size); |
---|---|
Description |
Allocates a block of size bytes of memory, returning a pointer to the beginning of the block. The content of the newly allocated block of memory is not initialized, remaining with indeterminate values.. |
Parameters |
|
Returns |
Returns a pointer to the memory block allocated by the function.
|
Requires |
Nothing. |
Example |
int *pi; // pointer to integer int ai[100]; // array of integers void main() { pi = (int *)Malloc(sizeof ai); // pi will point to a memory block where the array is allocated } |
Notes |
The type of this pointer is always void, which can be cast to the desired type of data pointer in order to be dereferenceable. |
Free
Prototype |
void Free(char * P, unsigned long Size); |
---|---|
Description |
This function is used to free memory block allocated by Malloc. |
Parameters |
|
Returns |
Nothing. |
Requires |
Nothing. |
Example |
int *pi; // pointer to integer int ai[100]; // array of integers void main() { pi = (int *)Malloc(sizeof ai); // pi will point to a memory block in the Heap where the array is allocated Free(pi, sizeof(pi)); // frees memory block from the Heap allocated by Malloc, pointed to by the pi pointer } |
Notes |
None. |
MM_LargestFreeMemBlock
Prototype |
unsigned long MM_LargestFreeMemBlock(); |
---|---|
Description |
This function is used to determine largest available free memory block for the Heap. |
Parameters |
None. |
Returns |
Largest free memory block for the Heap. |
Requires |
Nothing. |
Example |
unsigned long block; void main() { block = MM_LargestFreeMemBlock(); } |
Notes |
None. |
MM_TotalFreeMemSize
Prototype |
unsigned long MM_TotalFreeMemSize(); |
---|---|
Description |
This function is used to determine total free memory size. |
Parameters |
None. |
Returns |
Total free memory size. |
Requires |
Nothing. |
Example |
unsigned long total; void main() { block = MM_TotalFreeMemSize(); } |
Notes |
None. |
What do you think about this topic ? Send us feedback!