Article View: gnu.g++.bug
Article #1924virtual destructor fails to be called
From: James Clark
Date: Thu, 27 Apr 1989 19:25
Date: Thu, 27 Apr 1989 19:25
40 lines
1428 bytes
1428 bytes
g++ can fail to call the appropriate virtual destructor:
Script started on Thu Apr 27 20:13:54 1989
jclark% cat delete.c
#include <stdio.h>
struct A {
virtual ~A() { fputs("~A\n", stderr); }
};
struct B : A {
};
struct C : B {
~C() { fputs("~C\n", stderr); }
};
main()
{
B *p = new C;
delete p;
}
jclark% g++ -g -v delete.c
g++ version 1.34.1
/usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ delete.c /tmp/cca04129.cpp
GNU CPP version 1.34
/usr/local/lib/gcc-c++ /tmp/cca04129.cpp -quiet -dumpbase delete.c -g -version -o /tmp/cca04129.s
GNU C++ version 1.34.1 (sparc) compiled by GNU C version 1.34.
as /tmp/cca04129.s -o delete.o
/usr/local/lib/gcc-ld++ -C -e start -dc -dp -Bstatic /usr/local/lib/crt0+.o delete.o -lg++ /usr/local/lib/gcc-gnulib -lg -lc
jclark% a.out
~A
jclark% exit
jclark%
script done on Thu Apr 27 20:14:35 1989
If p is declared as an A*, ~C() gets called as it should.
James Clark
jjc@jclark.uucp
Technical Details
Message-ID:
<8904271925.AA04159@jclark.uucp>Path:
arc1-ca.pugleaf.net!utzoo!telly!ddsw1!lll-winken!uunet!tut.cis.ohio-state.edu!UUNET.UU.NET!jclark!jjcShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!telly!ddsw1!lll-winken!uunet!tut.cis.ohio-state.edu!UUNET.UU.NET!jclark!jjc From: jclark!jjc@UUNET.UU.NET (James Clark) Newsgroups: gnu.g++.bug Subject: virtual destructor fails to be called Message-ID: <8904271925.AA04159@jclark.uucp> Date: 27 Apr 89 19:25:43 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 40