I was trying to remember the basics of C programming, and regarding pointers to structures I was doing the following:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main()
{
    struct MyStruct {
        int number;
        char *name;
    };
    int i;
    struct MyStruct *p_struct = (struct MyStruct *) malloc(sizeof(struct MyStruct)*3);
    printf("sizeof(struct MyStruct) = %d\n", sizeof(struct MyStruct));
    for (i = 0; i < 3; i++)
    {
        p_struct->number = i;
        p_struct->name = "string";
        printf("p_struct->number = %d, p_struct->name = %s\n", p_struct->number, p_struct->name);
        ++p_struct;
    }
    printf("sizeof(p_struct) = %d\n", sizeof(p_struct));
    free(p_struct);
    return 0;
}
My question is: I get 8 bytes as the size of the structure, which is okay as 4+4 = 8 bytes due to alignment/padding of the compiler, but why do I get 4 bytes from sizeof(p_struct)?
I was expecting to get 24 (8 bytes x 3), why is this so?
If this is correct, can I get the total allocated size of 24 bytes somehow?
 
     
     
     
    