Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Julio Di Egidio Newsgroups: comp.lang.c Subject: Re: So You Think You Can Const? Date: Sat, 11 Jan 2025 17:21:25 +0100 Organization: A noiseless patient Spider Lines: 30 Message-ID: References: <87v7umpkfv.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 11 Jan 2025 17:21:26 +0100 (CET) Injection-Info: dont-email.me; posting-host="7e037d26dd5ee7b007fdefa6fea137e2"; logging-data="586801"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/aZ3sZQ6mkETzXo2ixOhb4syR8h0YAO7Q=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:hj/AH8HWicDwTShzha0+mghsASg= Content-Language: en-GB In-Reply-To: Bytes: 2595 On 11/01/2025 17:07, Julio Di Egidio wrote: > On 11/01/2025 12:14, David Brown wrote: >> On 10/01/2025 19:56, Keith Thompson wrote: > >> The idea was to place the emphasis on "free" changing the pointer, >> rather than the data pointed to. > > I feel I am still altogether missing the point. > > Is my understanding correct that when freeing a pointer: 1) the pointer > value, i.e. the address it holds, does not change; OTOH, 2) the > pointed-to object does change, in the sense that it is marked unusable > (and, supposedly, made available to re-allocation)? > > Moreover, while the pointer value has not changed, it is in fact changed > in the sense that it has become invalid, namely the pointer cannot be > used (validly dereferenced) anymore.  Not just that, but *every* pointer > to the same object, i.e. holding the same address, has become invalid. > > All that considered, how isn't `void free(void *p)`, i.e. with no const > qualifiers anywhere, the only reasonable signature? In fact, along that line, I could see one might insist that "strictly speaking, it should be `void free(void *const p)` because the pointer value is not changed" (my considerations above are indeed more "semantic"), OTOH, I just cannot see a case for `void free(void const *p)`, not even strictly technically. -Julio