comp.lang.ada
 help / color / mirror / Atom feed
From: David Thompson <dave.thompson2@verizon.net>
Subject: Re: Allocators design flaw
Date: Sun, 29 Oct 2017 12:01:07 -0400
Date: 2017-10-29T12:01:07-04:00	[thread overview]
Message-ID: <orqbvc919vsj193beujlk4f15hannh58q9@4ax.com> (raw)
In-Reply-To: lyh8v1bu5n.fsf@pushface.org

On Sat, 14 Oct 2017 16:56:04 +0100, Simon Wright <simon@pushface.org>
wrote:

> Victor Porton <porton@narod.ru> writes:
> 
> > Simon Wright wrote:
<snip>
> >>   struct chrs {
> >>     char c[10];
> >>   }
> >> 
> >> only *needs* alignment of 1
> >> 
> >>   struct chrs {
> >>     int last;
> >>     char c[256];
> >>   }
> >
> > No, all C structs share the same alignment.
> 
That's quite wrong. No C standard has ever required it, and I've used
several conforming C implementations where different struct types have
different alignments. 

There are restrictions on _pointers to structs_ (and unions) as I've
just described in another post, but not the structs/unions themselves.

> I agree that malloc() will always allocate aligned on some boundary
> (16-byte? 32-byte?) but that's not the same as the alignment of the
> struct itself.
> 
malloc (and calloc and realloc) are required to provide the 'maximal'
alignment of _any_ type supported by the compiler (which I've never
seen more than 8 bytes) and allowed to provide more if they want, for
example because it is sometimes beneficial (like SSE data on x86) or
because the allocator strategy works better (maybe buddy).

> See e.g.
> https://en.wikipedia.org/wiki/Data_structure_alignment#Typical_alignment_of_C_structs_on_x86
> 
Don't need typical, this is in the standard.

  parent reply	other threads:[~2017-10-29 16:01 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-14  2:53 Allocators design flaw Victor Porton
2017-10-14  7:27 ` Dmitry A. Kazakov
2017-10-14 13:52   ` Victor Porton
2017-10-14 14:25     ` Dmitry A. Kazakov
2017-10-14 14:03   ` Victor Porton
2017-10-14 14:26     ` Dmitry A. Kazakov
2017-10-14 15:18       ` Victor Porton
2017-10-14 15:44         ` Dmitry A. Kazakov
2017-10-14 16:42           ` Victor Porton
2017-10-14 16:13     ` Simon Wright
2017-10-14 16:38       ` Victor Porton
2017-10-14 14:12   ` Victor Porton
2017-10-14 14:20     ` Victor Porton
2017-10-14 14:24       ` Victor Porton
2017-10-14 14:36         ` Dmitry A. Kazakov
2017-10-14 15:17           ` Victor Porton
2017-10-14 15:51             ` Dmitry A. Kazakov
2017-10-14 16:34               ` Victor Porton
2017-10-14 17:14                 ` Dmitry A. Kazakov
2017-10-14 17:24                   ` Victor Porton
2017-10-14 18:08                     ` Dmitry A. Kazakov
2017-10-14 14:28     ` Dmitry A. Kazakov
2017-10-14 15:14       ` Victor Porton
2017-10-14 15:42         ` Simon Wright
2017-10-14 16:29           ` Victor Porton
2017-10-14 20:07             ` Simon Wright
2017-10-14 21:26               ` Victor Porton
2017-10-21  1:42     ` Randy Brukardt
2017-10-14  8:02 ` Simon Wright
2017-10-14 13:59   ` Victor Porton
2017-10-14 14:35     ` Simon Wright
2017-10-14 15:11       ` Victor Porton
2017-10-14 15:56         ` Simon Wright
2017-10-14 16:22           ` Victor Porton
2017-10-29 16:01           ` David Thompson [this message]
2017-10-14 14:11 ` Victor Porton
replies disabled

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