RTEMS/GCC C++ delete structure that contains a class

Brett Swimley brett.swimley at aedbozeman.com
Tue Sep 18 18:01:07 UTC 2007


Hi All,

I may be violating "best practice" coding, but I have a question 
regarding the RTEMS delete operator.

Consider something like:

class foo
{
public:
 foo() { p = new unsigned char[10]; }
virtual ~foo() { delete[] p; }
unsigned char* p;
};

I understand that calling new in a class constructor may not be the best 
coding practice, but...

Now consider a structure that contains the class:

typedef struct foo_info
{
foo fooinfo;
int i;
} FOO_INFO;

Now, given this code...

q = new FOO_INFO;

q->i = 0;   // For example...

delete q;


It appears that the destructor for foo never gets called.  Tracing into 
the delete operator, it is just calling free.  

Is this normal behavior?  It appears that if I change my structure 
declaration into a class definition, the expected behavior occurs.  If 
this is what needs to be done, I certainly can do this.

Should deleting a structure that contains a class invoke the class 
destructor?

Thanks in advance.

Brett




More information about the users mailing list