$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] request for interest in a garbage collection library
From: Achilleas Margaritis (axilmar_at_[hidden])
Date: 2009-04-20 13:07:29
Mathias Gaunard wrote:
> Jonas Persson wrote:
>
>> The following example gives an access violation on windows:
>>
>> ----------------------------------------------
>> class Foo : public gc_object<Foo> {
>> public:
>> gc_ptr<Foo> m_next;
>> std::string m_name;
>>
>> Foo(std::string name) : m_name(name) {}
>>
>> ~Foo() {
>> m_next->lastGoodbye();
>> }
>>
>> void lastGoodbye() { std::cout << "Bye " << m_name; }
>> };
>> void test_cycle() {
>> gc_ptr<Foo> foo1 = new Foo("foo 1");
>> foo1->m_next = new Foo("foo 2");
>> foo1->m_next->m_next = foo1;
>>
>> foo1 = 0;
>> gc::collect();
>> }
>
> So that library overloads operator new, meaning all memory becomes
> garbage collected, unlike what I understood from what was answered to
> one of my other posts.
No, it does not overload operator new, it only overloads the operator
new for the classes you want to be garbage collected.
> I even wonder how gc_ptr<T>::gc_ptr::(T*) can be a safe constructor at all.
What do you mean exactly?
>
> A fairly terrible design, that has a lot of shortcomings, some of which
> where raised when talking of Boehm GC (basically, bad integration).
What shortcomings do you specifically refer to?