What you need is something that guarantees
not to move its elements rather than something that doesn’t guarantee contiguous
memory. I don’t know if deque does this but you could end up with code that
only works if it’s built with the right compiler…
From:
boost-users-bounces@lists.boost.org
[mailto:boost-users-bounces@lists.boost.org] On
Behalf Of Igor R.
Sent: 16 May 2008 12:04
To: boost-users@lists.boost.org
Subject: Re: [Boost-users] is
read/write mutex example correct
I see... Then the whole problem
could be solved just by using deque instead of vector - since deque does't
guarantee contiguous memory block for its elements, and thus it
shouldn't reallocate the storage.
> >> > The problem with this code is that you are returning a
reference > to data that might be immediately invalidated. A push_back via
> another thread can cause the referenced memory to no longer be valid.
> > Does push_back() really invalidate iterators to *previous* vector
elements?!
>
> Yes: it might have to allocate a new chunk of memory for the vector, in
which
> case it will have to move all the existing elements to the new memory, and
> free the old one.
>
> Anthony
Get news, entertainment and everything you care about at
Live.com. Check
it out!
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________