C++ auto_ptr template query
Digvijoy Chatterjee
chatterjee.digvijoy@gmail.com
Wed May 24 04:54:00 GMT 2006
On 5/24/06, John (Eljay) Love-Jensen <eljay@adobe.com> wrote:
> HI Digvijoy,
>
> std::auto_ptr is for holding a single object, not arrays of objects.
>
> Don't use std::auto_ptr to hold arrays of objects.
>
> Use a std::list<Car> instead.
> try
> {
> std::list<Car> carList;
> carList.push_back(Car());
> carList.push_back(Car());
> carList.push_back(Car());
> }
>
> Or I bet Boost (www.boost.org) has something like a std::auto_ptr that holds arrays of objects.
>
> HTH,
> --Eljay
>
>
Hello Eljay,
I tried using std::list<Car> as you have suggested above, the code as
above runs but tells me :
*** glibc detected *** double free or corruption (fasttop): 0x0804b038 ***
and i loose 40 bytes, (the last Car when it allocated 10 ints but the
Motor fails )
if I comment the delete M ,and delete []a in the Car destructor
method, there is no double free corruption detected ,
~Car ()
{
//delete []a;
//delete M1;
}
but when i run valgrind :
==32159== LEAK SUMMARY:
==32159== definitely lost: 122 bytes in 5 blocks.
which is i think
[(4 * 10 ints) *3 Car objs ]=120
[ (1*1Motor) * 2 Car objs ] =2
Any suggestions ???
Digz
More information about the Gcc-help
mailing list