[phobos] Returning Scoped Allocators From Functions
David Simcha
dsimcha at gmail.com
Fri Jul 15 18:47:38 PDT 2011
I'm working on retrofitting TempAlloc (renamed to RegionAllocator)to fit
Andrei's proposed allocator interface. One issue I've run into is, what
happens when a scoped allocator is returned from a function? For example:
RegionAllocator fun() {
RegionAllocator alloc;
alloc.malloc(42);
RegionAllocator alloc2;
alloc2.malloc(42);
return alloc2;
}
Now, alloc has died and alloc2 is still alive, violating LIFO
requirements. Since it's virtually impossible to do by mistake, I'm
inclined to just make returning a RegionAllocator from a function after
another one has been subsequently created undefined behavior.
Also, while we're on the subject, does anyone have any serious
objections to me keeping frameInit/regionInit and frameFree/regionFree
(they've been renamed) public but undocumented? I need to write a
wrapper around this new interface to simulate the old interface and
avoid breaking a whole bunch of old code I've written. I don't see any
way to do this without these functions exposed. Furthermore, they might
be useful to people looking to build their own policies on top of
RegionAllocator's low-level mechanisms. Generally I believe that stable
low-level features should be exposed to avoid ugly abstraction inversions.
More information about the phobos
mailing list