[Development] [BB++] Now fixes all of your memory leak nightmares
Phil Bouchard
philippeb8 at gmail.com
Mon Jul 24 05:41:26 CEST 2017
On 07/22/2017 12:17 AM, Phil Bouchard wrote:
> Greetings,
>
> Now I have an example showing off the cyclic reference handling. Please
> see:
> https://github.com/philippeb8/root_ptr/blob/bb++/bbpp2cpp/tests/input2.bb
>
>
> This program correctly outputs:
>
> Document::Document(const boost::node_proxy&)
> auto __0(boost::node_proxy&, int)
> 1
> Document::Document(const boost::node_proxy&)
> Document::~Document()
> 2
> Document::~Document()
I just fixed an important bug where the node_proxies were passed by
value because of the variadic template arguments misuse; now they are
passed by reference in the 'make_*' factory.
Furthermore you can see by yourselves the following code example works
perfectly fine now:
class Document
{
auto head = nullptr<Document>();
auto tail = nullptr<Document>();
Document() { cout << __PRETTY_FUNCTION__ << endl; }
~Document() { cout << __PRETTY_FUNCTION__ << endl; }
auto foo = function (int argument) { cout << __PRETTY_FUNCTION__ <<
endl; return argument; };
};
int main()
{
auto temporary = 1;
auto document = new Document();
document.foo(temporary);
auto bar = function ()
{
auto document = new Document();
// cycle
document.head = document;
return document;
};
cout << 1 << endl;
auto result = bar().foo(temporary);
cout << 2 << endl;
}
Correctly outputs:
Document::Document(const boost::node_proxy&)
auto __lambda0(boost::node_proxy&, int)
1
Document::Document(const boost::node_proxy&)
auto __lambda0(boost::node_proxy&, int)
2
Document::~Document()
Document::~Document()
Thank you,
-Phil
More information about the Development
mailing list