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?