Re: To standardize Boost.Pool
On 4/12/2011 5:31 PM, Phil Bouchard wrote:
On 4/12/2011 2:56 PM, Jorgen Grahn wrote:
What would those benefits be, according to you? Detecting bugs (e.g.
assert_on_heap(ptr)), or something else?
Garbage collectors make use of such a function but also another memory
manager I wrote called: Shifted Pointer where we can see a repetitive
use of the function is_from() here:
http://www.fornux.com/personal/philippe/devel/shifted_ptr/boost/shifted_ptr.hpp
After some discussion with Boost, contiguous memory pool objects could
represent the process' stack, data and heap segments legally. For example:
struct process
{
static pool data;
static pool heap;
static pool stack;
};
The default implementation of the global operator ::new could be:
void * operator new(size_t n) { return process::heap.malloc(n); }
A call to is_from() with a pointer guaranteed to be within one of the 3
pools will then be valid:
int * h = new int;
process::heap.is_from(h) // true
int s;
process::heap.is_from(& s) // false
process::stack.is_from(& s) // true
static int d;
process::heap.is_from(& d) // false
process::stack.is_from(& d) // false
process::data.is_from(& d) // true
Thanks,
-Phil