Re: Just another SEGV ...

From: Volker Hejny (V.Hejny@fz-juelich.de)
Date: Fri Aug 20 1999 - 13:19:47 MEST


Hi,

On Wed, Aug 18, 1999 at 03:34:07PM -0700, Matthew D. Langston wrote:
> 
> I saw a couple of problems with your C++ code that will definitely cause
> you problems.

Right, they will cause problems, but ...

>   EMCalo::~EMCalo()
>   {
>      delete [] Modules;
>   }
> 
> You were using "delete Modules;", which the C++ Standard says will
> result in undefined behavior.

this is correct, but I found this error, too, and the problems 
during reading the file still remain. 

> An easy way to avoid problems like this (i.e. accidentally mixing your
> forms of "new", "new []", "delete" and "delete []") is to use the
> "auto_ptr" and "auto_array_ptr" class templates.  I have attached my
> implementation of an "auto_array_ptr" class template to this e-mail
> which you may find helpful.

Thanks, I will have a look at it.

> The second problem is that you were calling "delete" on your ifstream.
> In your code you have:

This was only a typo when writing the mail. I realized, that I
forgot a close() statement in the code and entered automatically
also a delete. This code would never run and in my following 
mail I had corrected this.

> FYI, whenever I get a segvio from cint, I always compile my code (not
> linking it, mind you), just to let the compiler catch my errors.  Your
> C++ compiler would have caught the errors that I spotted by eye (there
> may be others that I didn't catch as well).  Once the compiler is happy,
> my code typically runs just fine in the interpreter.

This is how I'm working in the meantime.

Best regards,
Volker



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:38 MET