[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: Segmentation fault em strcmp



Leonardo Giantini Trabuco wrote (on Friday, 7 Jun 2002, at 14:54:29 -0300):
 > On Fri, 7 Jun 2002, Yoshiharu Kohayakawa wrote:
 > 
 > > Leonardo Giantini Trabuco wrote (on Friday, 7 Jun 2002, at 14:48:10 -0300):
 > >  > Olá...
 > >  > 
 > >  > Pois é, não foi o último e-mail... :-)
 > >  > 
 > >  > Consegui algo bem "interessante"... Meu programa chama o strcmp, sendo que
 > >  > os dois argumentos que são passados para o strcmp são o ponteiro NULL...
 > >  > 
 > >  > e ele dá segmentatiom fault dentro do strcmp!
 > > 
 > > Sim!  O strcmp supoe que os argumentos sao strings, de forma
 > > que ele espera pelo menos um caracter cada (a saber, o '\0',
 > > indicando dois strings vazios).  Y.
 > 
 > Mas na página tem um programa (tabela de símbolos com ABBs) que chama o
 > strcmp com NULLitem como um dos argumentos... mas NULLitem é igual a NULL,
 > e isso funciona...

Em mais detalhe, é assim: o NULLitem nao tem chave, de forma que nunca
fazemos, por exemplo, o teste

  eq(key(NULLitem), v)

Fazemos testes do tipo

 if (STsearch(v) == NULLitem) 

que nao usa eq().  Assim, aquele codigo da pagina nunca executa 

 eq(NULL,NULL)

de forma que nunca vimos (até hoje?) esse erro.  Faz sentido?  Y.

 > >  > esta é a saída do gdb:
 > >  > ----------------------------------------------------
 > >  > Program received signal SIGSEGV, Segmentation fault.
 > >  > 0x400aab38 in strcmp () from /lib/i686/libc.so.6
 > >  > ----------------------------------------------------
 > >  > 
 > >  > Quanto aos argumentos, tenho certeza que realmente estou passando dois
 > >  > ponteiros nulos...
 > >  > 
 > >  > Alguma idéia?
 > >  > Leo.