// Cuánto mide cada cosa. malloc recibe bytes, no elementos.
#include <stdio.h>
#include <stdlib.h>

struct point {
    int x;
    int y;
};

int main(void) {
    int *p = malloc(10 * sizeof *p);
    struct point *q = malloc(sizeof *q);
    if (p == NULL || q == NULL) {
        free(p);
        free(q);
        return 1;
    }

    printf("sizeof(int)          = %zu\n", sizeof(int));
    printf("sizeof p  (puntero)  = %zu\n", sizeof p);
    printf("sizeof *p (un int)   = %zu\n", sizeof *p);
    printf("sizeof q  (puntero)  = %zu\n", sizeof q);
    printf("sizeof *q (un point) = %zu\n", sizeof *q);
    printf("10 enteros           = %zu bytes\n", 10 * sizeof *p);

    free(p);
    free(q);
    return 0;
}
