1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#pragma pack(1)


typedef struct _Number {
    union {    // 8 bytes == max(4, 8)
        int as_int;       // 4 bytes on our platform
        double as_double; // 8 bytes on our platform
    };
    enum { NUMBER_INT, NUMBER_DOUBLE } type;  // 4 bytes on our platform (?)
    char* name;                               // 8 bytes on our platform
} Number;  // 20 bytes


int main(int argc, char* argv[]) {
    Number* number_1_heap  = malloc(sizeof(*number));

    Number* number_2_heap  = number_1_heap;  // same memory
    Number* number_3_heap  = malloc(sizeof(*number_3_heap));

    *number_3_heap = *number_1_heap;

    Number  number_4_stack = 
    return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */

© Copyright 2021 Alexander J. Quinn         This content is protected and may not be shared, uploaded, or distributed.