On Fri, 20 Jun 2025 16:47:29 +0000, Farley, Peter <[email protected]> 
wrote:

>I would THINK that if an object on a heap is deleted, then a second delete 
>request for that same object SHOULD return an error (invalid object address at 
>least), which of course the programmer should be checking . . . but regardless 
>of checked or not checked, the effect of a second delete SHOULD not cause any 
>storage error in any rational heap system of which I can conceive.
>
>Was this a custom heap library or some existing standard heap library?

There is no return value from a delete so there is no way to check for an 
error. I would appreciate an assert or similar.

This is the utterly vanilla XLC C++/LE heap library.

If I am reading the docs correctly a bad delete used to throw but now the 
behavior is undefined.

It is my usual practice to follow a delete with setting the pointer to nullptr 
(zero). This has two benefits: (1) if one then tries to de-reference ("use") 
the pointer one gets an immediate fault rather than whatever the old address 
might happen to point to; and (2) a subsequent duplicate delete is a no-op. 
(Standard C++ behavior -- delete of a nullptr is a no-op.) I obviously failed 
to follow my own practice in this case. (And yes, it's not perfect. A program 
might have more than one pointer to an on-heap object.)

Charles

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to