Segfault with delete[] operator & virtually derived classes

Nathan Sidwell nathan@codesourcery.com
Mon Mar 7 18:41:00 GMT 2005


lrtaylor@micron.com wrote:
>>you asked for an array of Bs, if you're not treating it as an array of
>>Bs it's not gonna work.
> 
> 
> Why not?  If B is derived from A, there should be nothing wrong with
> storing pointers to B in an array of A pointers.  Although, it seems
> that A and B would need to have virtual destructors.  I didn't read the
> earlier part of the thread, so I don't know if that is the case here...

You are correct wrt an array of POINTERS to object (hence
my original suggestion to use just such an array).  The question
was about an array of OBJECTS.

>>...you're lying to the compiler, and then kludging around the issue.
> 
> 
> So, if B is derived from A and I do
> 
> A* a = new B;
> 
> am I lying to the compiler?  That's what inheritance and polymorphism is
> all about!
correct, but this is not what was being discussed.

the code was
	A *ary = new B[10];

which is significantly different.

nathan
-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::     CodeSourcery LLC
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk



More information about the Gcc-help mailing list