Author: Stan Eisenstat
Subject: Re: [Cs223] Alignment on Structs
Date: Thursday, 09 Apr 2020, 10:48:32
> Message Posted By: Unknown
>
> Is memory for structs automatically set to multiples of 8 bytes when
> storing them dynamically? Currently, I have a struct which contains a
> pointer (8 bytes) to another struct and an int (4 bytes), and when I
> dynamically allocate memory for this struct it allocates 16 bytes. My
> computer and the zoo are both 32-bit so I thought that they have
> processing sizes of 4 bytes, so I am not entirely sure.
sizeof(struct name) is always a multiple of the widest
field. For example:
struct {char a;} 1
struct {char a; char b;} 2
struct {char a; char b; char c;} 3
struct {int a;} 4
struct {int a; char b;} 8
struct {int a; char b; int c;} 12
struct {long a; char b;} 16
This ensures that if you create an array of structs, all
of the fields in all of the elements will be aligned.
Nice question.
--Stan-
PREV
INDEX
NEXT