Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch Newsgroups: comp.lang.c Subject: Re: AVL tree insertion - programming exercise Date: Tue, 13 Oct 2026 09:01:17 -0700 Organization: A noiseless patient Spider Lines: 48 Message-ID: <86v775h9o2.fsf@linuxsc.com> References: <86ece2kppv.fsf@linuxsc.com> <11akqm4$c6h9$1@dont-email.me> <11akuf1$bq6c$1@dont-email.me> <11al4mu$fqtl$1@kst.eternal-september.org> <11ali2e$pi$1@reader2.panix.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Tue, 13 Oct 2026 16:01:18 +0000 (UTC) Injection-Info: dont-email.me; logging-data="730664"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19ecXkvehCw1lCFpF4He49D62ShLegdCfQ="; posting-host="065d2eee2cd7241f5f1e4f229d8fc207" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:eWcpinLtoYB1MtAjQ9gawmy36Rc= sha1:oX/RJ1ZDvxEMp+icI8ZL9CHcqzg= sha256:eubSz0llMwdGzSu9RiO+Tium/Waam/9hRIL5cDEI23I= sha1:npww+3AZgycJ3dT3Hj5p85h4k7s= sha256:cx5n0qqhrZSPOT88t+JEI5KqzCTD/3nQycUZkPxXqbg= Xref: csiph.com comp.lang.c:403110 cross@spitfire.i.gajendra.net (Dan Cross) writes: > In article <11al4mu$fqtl$1@kst.eternal-september.org>, > Keith Thompson wrote: > >> David Brown writes: >> >>> On 13/10/2026 10:38, chine.bleu wrote: >>> >>>> Tim Rentsch wrote: >>>> >>>>> sons[2] array. These links are basically pointers, but held >>>>> as uintptr_t so they can take one of the bits to mean "tall", >>>>> which means taller than the other subtree of the node. The >>>>> tree structure should maintain an invariant that at most one >>>> >>>> Memory is cheap. >>> >>> Not any more! >>> >>>> Do not encode tags into low bits of an address unless you really >>>> know what your doing. >>> >>> Agreed, as a principle. >>> >>>> As a precaution check the return address of malloc >>>> p = malloc(m); >>>> if ((uintptr_t)p)&1!=0) abort(); >>> >>> malloc always returns an address with suitable alignment for any >>> fundamental alignment on the target. > > I don't think this is true anymore, as of C23. Here's the > relevant text from n3220, sec 7.24.3, describing the return > value from `malloc` et al: > > |The pointer returned if the allocation succeeds is suitably > |aligned so that it may be assigned to a pointer to any type of > |object with a fundamental alignment requirement and size less > |than or equal to the size requested. > > This sentence is somewhat ambiguous because it's unclear whether > the "less than or equal to the size requested" criteria applies > to both the pointer type's size _and_ fundamental alignment > requirement, or _just_ the size, [...] It's poorly constructed but in English it has only one grammatical parse.