From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Unchecked_Deallocation with tagged types Date: Sun, 18 Apr 2021 12:34:39 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <607b56f8$0$3721$426a34cc@news.free.fr> <07863309-4541-4497-8cec-d88179e634bdn@googlegroups.com> NNTP-Posting-Host: 5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61821 List-Id: On 2021-04-18 12:20, J-P. Rosen wrote: > Le 18/04/2021 à 11:09, Jeffrey R. Carter a écrit : >> On 4/18/21 10:46 AM, Gautier write-only address wrote: >>> Side note: did anyone already suggest a new keyword: unchecked_free >>> and a special statement: >>> >>>    unchecked_free Some_Pointer; >> >> For every access variable P, there could exist the attribute procedure >> >>    P'Free; >> > Which would defeat the goal of Unchecked_Deallocation. > > Ada (or more precisely Ichbiah) chose to deallocate through an > instantiation of a generic for good reason. Deallocation is a place > where many problems can come from, it is important to be able to trace > where they are. The current solution forces you to put "with > Unchecked_Deallocation" on top of every module that deallocates, > therefore telling the reader that there is some danger in it, and making > it easier to find where all the deallocations happen. No, that does not work. If we supposed to search for all calls to deallocate, then attribute 'Free is much easier to look after than first looking for "with Unchecked_Deallocation", then for an instantiation of it with the types in question and then for the name of the instance. > Now, I know that in those days, ease of writing is considered more > important than ease of reading and long term maintenance... Yes, but dangling pointers is a more complex problem, that effortlessly passes brief code inspections. I agree with you in general, but disagree in this case. *IF* pointers are used *THEN* Unchecked_Deallocation only obfuscates things rather than helps. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de