Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2004-01-28 11:10:05


Darren Cook wrote:
> I've a class using the boost quick_allocator like this:
>
> class Chain{
> //...
> void* operator new(std::size_t sz){
> return boost::detail::quick_allocator<Chain>::alloc(sz);
> }
> void operator delete(void *p,std::size_t sz){
> boost::detail::quick_allocator<Chain>::dealloc(p,sz);
> }
> //...
> };
>
>
> I've started using valgrind ( http://valgrind.kde.org/ ) to look for
> memory problems in my unit tests and it is complaining that the
> memory is never released.
>
> Now I understand this:
> // "Listen to me carefully: there is no memory leak"
> // -- Scott Meyers, Eff C++ 2nd Ed Item 10
>
> But is there some function I can call at the end of my program to:
> a) confirm I've called dealloc() for every alloc() and that the
> next pointer is currently at start

No, sorry. This would require quick_allocator to keep too much debugging
information. It is not a debugging tool. Use a different allocator in
valgrind/test builds.

This might be easier if I add something like BOOST_QA_USE_MALLOC to make
quick_allocator just forward alloc/dealloc to malloc/free.

> b) release the memory.

Again, no, since currently quick_allocator does not keep track of its
allocations (because it doesn't need to). I'll think about this.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk