Autor Tópico: Funcao getgrgid e struct group  (Lida 1470 vezes)

Offline celsolrc

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Funcao getgrgid e struct group
« Online: 26 de Fevereiro de 2009, 16:26 »
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:

Código: [Selecionar]
/* 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 ?

Código: [Selecionar]
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