Oi,
Estou com uma dúvida que, em parte, tambem tem a ver com um pouco de base de uso de ponteiros em C.
Existe uma estrutura group que retorna através de uma chamada da função getgrgid.
O formato da estrutura:
/* The group structure. */
struct group
{
char *gr_name; /* Group name. */
char *gr_passwd; /* Password. */
__gid_t gr_gid; /* Group ID. */
char **gr_mem; /* Member list. */
};
Minha duvuida pe a seguinte:
Estaria errado usar esta estrutura conforme esta abaixo ?
char *funcao_X(int id)
{
struct group *Gpw;
Gpw = getgrgid (id);
return (Gpw->gr_name);
}
Sei que a estrutura vai ser desalocada ao final da função mas acontece que gr_name é um ponteiro para char. Até onde eu sei, em C, ao desalocar a estrutura ele não vai (e nem pode) liberar o conteúdo apontado pelos ponteiros da estrutura. Sendo assim, o ponteiro retornado continuaria válido.
Uma outra dúvida, mas agora seria quanto ao funcionamento da getgrgid:
Após usar o ponteiro retornado pela função acima (que aponta para uma area de memoria ainda válida) eu precisaria desalocar este ponteiro ?
Se eu preciso desalocá-lo, tambem precisaria desalocar os outros ponteiros da estrutura antes de sair da funcao_X (gr_passwd, e gr_mem).
Alguem pode me ajudar ?
[]s,
Celso