On Friday, 1 November 2013 at 08:59:36 UTC, Namespace wrote:
On Friday, 1 November 2013 at 05:49:04 UTC, Stretto wrote:
On Thursday, 31 October 2013 at 22:03:18 UTC, Namespace wrote:
The 'it' property is only some 'singleton' approach.
You can write:

void foo() {
  auto buffer = Mallocator.allocate(42);
  /// ... many code
}

And at the end of the scope buffer is cleared because Mallocator's destructor call deallocateAll (if I'm not wrong).


That doesn't seem right? deallocateAll would deallocate all allocated objects? Even outside of foo's scope? Also, how would Mallocator.allocate know what to deallocate unless it kept a history? Why would the example code explicitly deallocate the object at the end of the scope if it were unnecessary?

Sorry, I was tired. ^^

That is the correct code:

void foo() {
    Mallocator m;
    auto buffer = m.allocate(42);
}

If m get out of scope, it deallocates all allocated memory.

Ok, I can see that but what if we want a "global" allocator? Then we need an easy way to deallocate on scope exit. I see no way to do that implicitly without some like I've mentioned(the (de)allocator needs a way to add itself to the scope exit).

Reply via email to