Hoskins, Stephen2007-12-132007-12-132007-12-13https://hdl.handle.net/1920/2925Because of the growing popularity of programming languages with garbage collectors, such as C# and Java, there is a clearly a desire for languages that support automated memory management. However, as a result of the inefficiencies of the garbage collectors of C# and Java, there is a requirement that programmers have a better understanding of the underlying implementations of the garbage collectors in order to make applications more robust or so that they can run on real-time systems. Using an implementation of smart pointers written from scratch, this paper attempts to address this problem by exploring techniques that are used by garbage collectors and ultimately concluding which features of object-oriented languages make the task of automating efficient garbage collection more difficult. As a result of the conclusions produced in this paper, it may be possible to create a brand new language with the simplicity and elegance of Java and the robustness and efficiency of C without the developer ever needing to perform memory management.en-USCompilersGarbageCollectionReferenceCountingA Compiler-Based Approach to Implementing Smart PointersThesis