GC-cooperative C++

  • A. Dain Samples
Object Oriented Languages
Part of the Lecture Notes in Computer Science book series (LNCS, volume 637)


A garbage collector for C++ should maintain the spirit of the language as much as possible and yet provide mechanisms for reliable development and debugging of programs utilizing garbage collection. This paper proposes a design of such a system, including a minimal set of language changes, and compile-time and runtime environment enhancements. The design provides support for many different kinds of garbage collection strategies (copying, mark and sweep, generational, ...), does not impose extensive overhead on runtime objects that do not use garbage collection, and imposes as few restrictions on programming style as possible.


Garbage Collection Class Hierarchy Class Member Garbage Collector Member Function 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Daniel Ross Edelson, “Dynamic Storage Reclamation in C++,” Master's Thesis, Univ. of California, Santa Cruz, UCSC-CRL-90-19, June 1990.Google Scholar
  2. [2]
    Daniel Ross Edelson, “A Mark-and-Sweep Collector for C++,” Conference Record of the Nineteenth ACM Symposium on Principles of Programming Languages, Albuquerque, NM (Jan. 19–22, 1992).Google Scholar
  3. [3]
    Daniel Ross Edelson & Ira Pohl, “A copying garbage collector for C++,” Usenix C++ Conference Proceedings, Washington, D.C.(Apr. 1991).Google Scholar
  4. [4]
    Joel F. Bartlett, “Compacting Garbage Collection with Ambiguous Roots,” Digital Equipment Corp., Western Research Center, WRL 88/2, Feb. 1988.Google Scholar
  5. [5]
    Joel F. Bartlett, “Mostly-Copying Collection Picks Up Generations and C++,” Digital Equipment Corp., Western Research Center, TN-12, Oct. 1989.Google Scholar
  6. [6]
    David L. Detlefs, “Concurrent Garbage Collection for C++,” Carnegie-Mellon Univ., CMU-CS-90-119, Pittsburgh, PA, May 1990.Google Scholar
  7. [7]
    Andrew Ginter, “Design Alternatives for a Cooperative Garbage Collector for the C++ Programming Language,” Dept. of Computer Science, Univ. of Calgary, Research Report No. 91/417/01, Calgary, Alberta, Canada, Jan. 1991.Google Scholar
  8. [8]
    Bjarne Stroustrup, “The evolution of C++: 1985 to 1987,” USENIX C++ Workshop Proceedings (1987).Google Scholar
  9. [9]
    Hans-Juergen Boehm & Mark Weiser,“Garbage Collection in an Uncooperative Environment,” Software-Practice Experience 18 (Sept. 1988), 807–820.Google Scholar
  10. [10]
    Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow & Greg Nelson, Modula-3 Report (revised), Digital Equipment Corp., Western Research Center, 1988.Google Scholar
  11. [11]
    Andrew W. Appel, “Runtime tags aren't necessary,” Lisp and Symbolic Computation 2 (1989), 153–162.CrossRefGoogle Scholar
  12. [12]
    Benjamin Goldberg, “Tag-Free Garbage Collection for Strongly Typed Programming Languages,” Proceedings of the ACM-SIGPLAN 1991 Conference on Programming Language Design and Implementation26 (June 26–28, 1991), 165–176.CrossRefGoogle Scholar
  13. [13]
    Amer Diwan, Eliot Moss & Richard Hudson,“Compiler Support for Garbage Collection in a Statically Typed Language,” Proceedings of the ACM-SIGPLAN 1992 Conference on Programming Language Design and Implementation 27 (June 17–19, 1992), 273–282.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • A. Dain Samples
    • 1
  1. 1.Dept. of Electrical and Computer EngineeringUniversity of CincinnatiCincinnati

Personalised recommendations