Skip to content

This project provides functionalities for custom memory allocation, including multiple allocation strategies (First-Fit, Next-Fit, Best-Fit), architecture-specific memory alignment, and debugging support.

License

Notifications You must be signed in to change notification settings

RafaelVVolkmer/libmemalloc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues ULicense LinkedIn

libmemalloc logo

by: Rafael V. Volkmer - @RafaelVVolkmer - rafael.v.volkmer@gmail.com

- Project Description

This library is responsible for implementing a customized dynamic memory allocation system, with a choice between different algorithms and usage strategies — First-Fit, Next-Fit, Best-Fit. It implements a memory alignment system by processor architecture, direct access to the heap memory space through the linking process and, above all, a memory detection system, where every allocation is mapped with its name, size, address in the heap, line, file and function where they were allocated and free flag, being able to access this information and print it on the terminal at any time, during program execution time.

(back to top)

- Repository tree

/libmemalloc
├── /inc
│   └── libmemalloc.h
├── /src
│   └── libmemalloc.c
├── /bin
│   ├── libmemalloc.o
│   ├── libmemalloc.a
│   └── libmemalloc.so
├── /readme
│    └── libmemalloc.svg
├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
└── makefile

The libmemalloc repository is structured to separate different aspects of the project clearly:

  • Source Code Organization: The src and inc directories segregate implementation files from interface declarations, promoting modularity and ease of maintenance.

  • Build Outputs: The bin directory holds the compiled binaries, keeping them separate from the source code and preventing clutter in the main project directories.

  • Documentation and Assets: The readme directory contains visual assets that support the project's documentation, enhancing the clarity and professionalism of the project presentation.

  • Configuration and Metadata: Files like .gitignore, .gitattributes, LICENSE, and README.md provide essential information for version control, project licensing, and user guidance, ensuring that the project is well-documented and properly managed.

  • Build Automation: The makefile facilitates an automated and consistent build process, which is crucial for collaboration, continuous integration, and efficient development workflows.

(back to top)

- Tech Stack and Environment Settings

Category Technologies and Tools
Programming Languages C
Build System CMake
Version Control Git GitHub
Documentation Doxygen Markdown
Support Tools Docker
Operating System Ubuntu
IDE Neovim

(Back to Top)

- Build and Use

(Back to Top)

- References

Title Author / Year
Understanding and Using C Pointers: Core Techniques for Memory Management by: Richard M. Reese, 2013
The Garbage Collection Handbook: The art of automatic memory management by: Anthony Hosking, 2011
C++ pointers and dynamic memory management by: Michael C. Daconta, 1993
Efficient memory programming by: David Loshin, 1999
Memory Management by: Bill Blunden, 2002

(back to top)

About

This project provides functionalities for custom memory allocation, including multiple allocation strategies (First-Fit, Next-Fit, Best-Fit), architecture-specific memory alignment, and debugging support.

Topics

Resources

License

Stars

Watchers

Forks