Boost logo

Boost :

Subject: Re: [boost] discussion of garbage collection in C++
From: Kasra (kasra_n500_at_[hidden])
Date: 2009-04-26 22:10:40


Edward Diener wrote:
>Also, for people looking for a runtime envrironment for C++, they can look >at Ch.

Or CERN.ROOT.CINT project.

Either way we are looking at GC in C++ from the wrong direction. I like to know and be able to determine where the memory allocation deallocation occurs. When the constructor and destructor is called using RAII, however, this doesn't mean I shouldn't use GC.

GC is supposed to release unused memory, not to call the destructors of objects; although it does on most implementations.

[example

bool g(int);

for(int i=0; i<10000; i++) {
  // allocate a memory of size = sizeof(Foo)
  // then construct an instance of Foo on that memory
  gc_ptr<Foo> f(new (gc) Foo());

  // if g(i) == true, delete the memory
  if( g(i) )
    operator delete(f, gc);
}

// delete all of the objects.
GC::collect();

example]

The distinction is between construction/destruction of objects and
allocation/deallocation of memory. We let GC to perform allocation/deallocation of memory, while we allow ourselves optionaly
to take control of construction/destruction of the objects allocated on
that memory.

This distinction is so important while everyone ignores :D

-- Kasra

      


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk