Garbage collectors in languages like C# are provided by the environment. They work in parallel with the user program and try to clean up after the program whenever it seems efficient. We cannot do the same in C++; all we can achieve is the implementation of a garbage collector directly in the program, providing a semi-automatic way of freeing the used memory resource. This mechanism is properly covered by the smart pointers introduced in the language since C++11.
Memory management is one of the key components of every computer program. A program should be able to request memory dynamically during its execution. Good programmers understand the inner details of memory management. That helps them to design and implement more performant applications. While manual memory management is considered an advantage, it tends to become painful in larger applications. We have learned...