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!



