A alocação usando sizeof gera tamanho errado para ponteiros de estrutura?
Usando o valgrind para ler isso, recebo: Gravação / leitura inválida do tamanho 4
struct Person{
char* name;
int age;
};
struct Person* create_person(char *name, int age)
{
struct Person* me = (struct Person*)malloc(sizeof(struct Person*));
assert(me!= NULL); //make sure that the statement is not null
me->name = name;
me->age = age;
return me;
}
Usando este log limpo com o valgrind
struct Person{
char* name;
int age;
};
struct Person* create_person(char *name, int age)
{
struct Person* me = (struct Person*)malloc(sizeof(struct Person*)+4);
assert(me!= NULL); //make sure that the statement is not null
me->name = name;
me->age = age;
return me;
}
Por que eu deveria colocar explicitamentesizeof(struct+intSize)
evitar esse erro?sizeof
não recebe todo o tamanho de uma estrutura?