The final project for this Memory Management course is to implement your own version of a smart pointer. You can think of this as implementing your own garbage collector, to use a concept from other programming languages. Building this project will help you understand both how to work with pointers and references, and also why smart pointers are so important to modern C++ programming. Complete the implementations and verify that your implementation does not have any memory leaks!
The garbage collector consists of the following key files:
- gc_pointer.h - Header file containing the
Pointertemplate class declaration - gc_pointer.tpp - Template implementation file with all member function definitions
- gc_details.h - Header file containing the
PtrDetailsclass for tracking pointer metadata - gc_iterator.h - Header file containing the
Iteriterator class for traversing garbage-collected objects - LeakTester.h - Memory leak detection utility for verifying proper memory management
- main.cpp - Test program demonstrating garbage collector functionality
The Pointer class uses a reference-counting mechanism to automatically manage memory allocation and deallocation. When all references to a pointer are removed, the garbage collector automatically frees the associated memory.
To build this project, you will need a C++ compiler. The make script provided
assumes the GCC compiler, however you may substitute an equivalent C++ compiler
by adjusting the make script as needed. Execute the make script, then run the
compiled executable.
If the code fails to compile, the execute won't be created or will remain the last-compiled version. Adjust your code to resolve compiler errors and try again.
$ sh make
$ ./compiledAlternatively, you can compile directly:
$ g++ -std=c++1y -Wall -o compiled main.cpp
$ ./compiled- Complete
Pointerconstructor - Complete
Pointeroperator== - Complete
Pointerdestructor - Complete
PtrDetailsclass