Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > "delete" assert...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 3 Topic 45836 of 47977
Post > Topic >>

"delete" asserts in debug build, multiple inheritance (msvc 7.1)

by "Alf P. Steinbach" <alfps@[EMAIL PROTECTED] > May 10, 2008 at 03:38 AM

Note: cross-posted [comp.lang.c++] and [microsoft.public.vc.language].
Feel free to set follow-ups as appropriate (I don't know at this point).


<code>
struct Foo
{
     virtual ~Foo() {}       // Seemingly works without this destructor.
};

template< typename T >
struct Wrapper: T, Foo
{
     Wrapper(): T() {}
     virtual ~Wrapper() {}   // This destructor doesn't seem to matter.
};

struct Naughty
{
     //virtual ~Naughty() {} // Seemingly works with this destructor.
};

int main()
{
     typedef Wrapper<Naughty> X;     // This is irrelevant.
     X* p = new X;
     delete p;           // !!! Blows up with MSVC 7.1 debug build.
}
</code>


<build>
     cl /nologo /GX /GR /MDd main.cpp
</build>


<effect>
     A big bad Bill-Box pops up, saying that there's DAMAGE: after block
so
     and so (the allocated block).  Debugger lands on line 1165 in
[dbgheap.c],
     but evidently that box is produced by 1151, which at least matches
the text.
     This is, naturally, in function _free_dbg, called after destructors
have
     run successfully (at least, that's what I believe).
</effect>


Some help would be nice.  The fixes indicated above makes the problem go
away. 
However, the original code that this example is condensed from, can't rely
on 
class Naughty having a virtual destructor (or rather, it can require that,
but 
it would be a little impractical, almost offensive, since no logical
reason?).

Help, please,


- Alf

-- 
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
 




 3 Posts in Topic:
"delete" asserts in debug build, multiple inheritance (msvc 7.1)
"Alf P. Steinbach&qu  2008-05-10 03:38:28 
Re: "delete" asserts in debug build, multiple inheritance (msvc
"Alf P. Steinbach&qu  2008-05-10 05:18:02 
Re: "delete" asserts in debug build, multiple inheritance (msvc
=?UTF-8?B?RXJpayBXaWtzdHL  2008-05-10 14:43:59 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Oct 11 7:56:25 CDT 2008.