- Run the following command to test:
./bin/test
- If changes are made to
mem_alloc.c
, compile for testing using:
gcc -o ./bin/test test.c mem_alloc.c -pthread
- Implemented malloc(), calloc(), realloc() and free().
- Implemented locking mechanism such that no 2 threads can concurrently access memory.
- Made use of linked lists to handle non contiguous memory.
- Text section: Holds the binary code that the processor executes.
- Data section: Stores static data that is initialized with non-zero values.
- BSS (Block Started by Symbol): Contains static data that is initialized to zero. Any uninitialized static data in the program is set to zero and placed here.
- Heap: Used for storing dynamically allocated data.
- Stack: Contains automatic variables, function arguments, and a copy of the base pointer.
sbrk() is a function used to manage a program's memory dynamically. brk or program break points to the end of the heap.
- sbrk(0): returns current address of program break.
- sbrk(x): allocates memory and increments increments brk by x bytes.
- sbrk(-x): releases memory and decrements brk by x bytes.
- failure: sbrk() returns (void*) -1.
pthread_mutex_t
is used to ensure thread-safe memory allocation.- This mutex is used to lock critical sections in the memory allocation functions so no 2 threads can concurrently access memory.