Funcao getgrgid e struct group

Iniciado por celsolrc, 26 de Fevereiro de 2009, 16:26

tópico anterior - próximo tópico

celsolrc

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