[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
RE: Segmentation fault em strcmp
- Subject: RE: Segmentation fault em strcmp
- From: Leonardo Giantini Trabuco <ltrabuco@cecm.usp.br>
- Date: Fri, 7 Jun 2002 15:19:38 -0300 (BRT)
On Fri, 7 Jun 2002, Yoshiharu Kohayakawa wrote:
> 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.
Claro!!! eu substitui o teste por eq()... tudo certo... até e obrigado!
>
> > > > 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.
>