comp.lang.ada
 help / color / mirror / Atom feed
From: "Warren W. Gay VE3WWG" <ve3wwg@home.com>
Subject: Re: memory leakages with Ada?
Date: Mon, 18 Mar 2002 17:38:46 GMT
Date: 2002-03-18T17:38:46+00:00	[thread overview]
Message-ID: <3C962624.5080008@home.com> (raw)
In-Reply-To: a71ffd$5c9$1@msunews.cl.msu.edu

Chad R. Meiners wrote:

> "Kevin Cline" <kcline@optelnow.net> wrote in message
> 
>>Dereferencing nil is just as fatal to program execution.  The only
>>
> advantage
> 
>>is that it is more easily debugged because the crash is immediate.
>>Any code that keeps invalid pointers around, whether null or not, is
>>poorly crafted.  Good programmers don't much care about the state
>>of a pointer variable after delallocation because the variable
>>is either going to be reassigned immediately or is going out of scope.
>>
> 
> While it is true that dereferencing a null pointer will raise a
> constraint_error exception, exceptions can be handled gracefully and null
> pointers can be guarded against.  Pointers off to nowhere are very difficult
> to detect in a general manner.


My own personal observation is that C/C++ programmers will err on the

side of efficiency, rather than safety.  After a free()/delete, they'll
usually not set the pointer to null. It also comes up in functions a lot,
like this:

void myfun() {
     char *cp;                  /* work pointer */

Rather than code :

void myfun() {
     char *cp = NULL;           /* work pointer */

The former is very often chosen instead to avoid the overhead
of setting the value to null (or to avoid having to type the
initial assignment, by lazy programmers).

The consequence very often is that later on, in larger functions,
someone will add some functionality or correct it, and get stung
by a bad pointer with garbage in it.  If you're lucky, it will
be such that a fault occurs. Otherwise, memory corruption galore
sets in (if used for storing values or for copying strings) that
will create all kinds of fun.

I have seen this sort of thing create "side effects" on rare
occasions in production C code for years, until it was finally
tracked down. The intermittant problem is the worst kind to
debug.

I like the Ada safety factor with their access types,
and the way Unchecked_Deallocation sets the pointer back to
null. With the speed of processors today, it is a small price
to pay for software correctness.


-- 
Warren W. Gay VE3WWG
http://home.cogeco.ca/~ve3wwg




  parent reply	other threads:[~2002-03-18 17:38 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-14 14:07 memory leakages with Ada? Calvin Ow
2002-03-14 14:31 ` Larry Kilgallen
2002-03-14 20:42   ` Nick Roberts
2002-03-14 21:11     ` Larry Kilgallen
2002-03-14 21:07   ` Anh_Vo
2002-03-14 20:12 ` Marin David Condic
2002-03-15  9:37   ` John McCabe
2002-03-15 12:55     ` Pat Rogers
2002-03-16  4:36       ` Will
2002-03-16  4:53         ` Pat Rogers
2002-03-16 12:21         ` Larry Kilgallen
2002-03-16  9:13       ` DPH
2002-03-16 14:38         ` Pat Rogers
2002-03-16 14:56           ` DPH
2002-03-16 15:51             ` Preben Randhol
2002-03-16 16:39               ` DPH
2002-03-16 19:51                 ` Pat Rogers
2002-03-16 20:40                   ` DPH
2002-03-17 19:31                   ` Richard Riehle
2002-03-17 21:49                     ` Pat Rogers
2002-03-17 22:02                       ` Pat Rogers
2002-03-18 22:32                         ` Randy Brukardt
2002-03-18 22:47                           ` Pat Rogers
2002-03-18  7:22                       ` Richard Riehle
2002-03-18 17:35                     ` Marin David Condic
2002-03-17 16:26                 ` Steve Doiel
2002-03-16 20:18         ` Robert A Duff
2002-03-16 20:36           ` DPH
2002-03-15 14:20     ` Marin David Condic
2002-03-18 17:54       ` Warren W. Gay VE3WWG
2002-03-18 19:54         ` Hyman Rosen
2002-03-18 20:34           ` Larry Kilgallen
2002-03-18 21:18             ` Hyman Rosen
2002-03-18 21:45               ` Larry Kilgallen
2002-03-20  1:19                 ` Hyman Rosen
2002-03-20 17:06                   ` Warren W. Gay VE3WWG
2002-03-20 17:56                     ` Larry Kilgallen
2002-03-20 17:48                   ` Marin David Condic
2002-03-22  0:25               ` Matthew Woodcraft
2002-03-22  5:10                 ` Hyman Rosen
2002-03-18 22:18         ` Marin David Condic
2002-03-20 20:49         ` Bertrand Augereau
2002-03-21  4:31         ` Will
2002-03-15 16:00     ` Hyman Rosen
2002-03-15 21:59       ` Chad R. Meiners
2002-03-17  5:43         ` Kevin Cline
2002-03-17  7:22           ` Chad R. Meiners
2002-03-18  4:09             ` Kevin Cline
2002-03-18 16:54               ` Chad R. Meiners
2002-03-18 17:38             ` Warren W. Gay VE3WWG [this message]
2002-03-19  9:21               ` John McCabe
2002-03-19 17:11                 ` Warren W. Gay VE3WWG
2002-03-19 17:16                   ` Pat Rogers
2002-03-19 17:51                   ` David C. Hoos
2002-03-19 18:20                   ` Frank J. Lhota
2002-03-19 23:43                     ` Mark Johnson
2002-03-20 15:09                       ` Frank J. Lhota
2002-03-17  7:27           ` Hyman Rosen
2002-03-18  3:52             ` Kevin Cline
2002-03-18  5:37               ` Hyman Rosen
2002-03-15 17:41   ` Kevin Cline
2002-03-15 18:00     ` Marin David Condic
2002-03-15 18:08     ` Hyman Rosen
2002-03-16 10:15       ` Kevin Cline
2002-03-14 23:14 ` Kevin Cline
2002-03-15  3:20 ` Steve Doiel
2002-03-15  9:32   ` John McCabe
2002-03-15 15:46     ` Hyman Rosen
2002-03-15 17:29     ` Kevin Cline
2002-03-15 15:48   ` Jeffrey Carter
2002-03-16  3:05     ` Steve Doiel
2002-03-16 20:19       ` Jeffrey Carter
2002-03-15 17:25   ` Kevin Cline
2002-03-15 18:03     ` Hyman Rosen
2002-03-16 10:07       ` Kevin Cline
2002-03-17  3:00         ` Hyman Rosen
2002-03-15  9:27 ` John McCabe
  -- strict thread matches above, loose matches on Subject: below --
2002-03-20  6:25 Christoph Grein
2002-03-20 16:35 ` Hyman Rosen
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox