[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: Yoshiharu Kohayakawa <yoshi@ime.usp.br>
- Date: Fri, 7 Jun 2002 15:11:27 -0300
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.