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.
next prev 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