[FUG-BR] Arvore binária erro de memoria no FreeBSD

Cristiano Panvel cristiano.panvel em gmail.com
Terça Outubro 31 16:43:07 BRST 2006


Descupe pessoal nao ter enviado o codigo todo pois tinha varias coisas
confidenciais no meio, mais o erro era realmente no destroy do merge
depois do precessamento da expressão obrigado pela ajuda dos colegas.

Abraços.

On 10/31/06, Eder <ederbsd em gmail.com> wrote:
> Olá,
>
> Como os nobres colegas já falaram, poste sempre o código todo, com o
> erro do compilador se possível.
>
> Se você para chutar alguma coisa, diria que você não está destruindo o
> merge, então nesta parte do código você deveria faze-ló, e mais se não
> está fazendo isso em algum outro ponto também dará problema em
> qualquer outro OS.
>
> E principalmente se você processando expressões do tipo "pós-fixa"
> algo assim, por
> exemplo:
>
> (((74 10 -)32/) (23 17 +)x = 80
>
> Elas possuem diferença, provavelmente sabe disso, tente detruir o
> merge no final do processo assim.
>
> init bitree_merge(BiTree *merge, BitTree *left, BiTree *right, const void *data)
> {
>
> bitree_init(merge, left->destroy);
>
> if(bitree_ins_left (merge, NULL, data) !=0) {
>
> /* Aqui da erro no merge quando executo erro de memoria full */
> bitree_destroy(merge);
>
> return -1;
> }
>
> OBS:
> Quando retornar algo, não faça simplesmente "return", coloque o
> parametro inteiro junto
> você está trabalhando com C puro, não é um método de C++.
>
> Att, Eder
>
>
> On 10/31/06, Rogério Schneider <stockrt em gmail.com> wrote:
> > Manda a função bitree_ins_left() pq eh nela que está o erro.
> > Eu uso AVL e binary no FreeBSD/Linux sem problemas.
> >
> > Att,
> > RS
> >
> >
> > On 10/31/06, Giovanni P. Tirloni <gpt em tirloni.org> wrote:
> > > Cristiano Panvel wrote:
> > > > Uma pergunta, estou fazendo um algoritmo de arvore binária para
> > > > efetuar processamento de expressões, e funciona corretamente em Linux
> > > > e AIX mais no FreeBSD está dando erro nesta parte do código e não sei
> > > > o que pode ser.
> > > >
> > > >
> > > > init bitree_merge(BiTree *merge, BitTree *left, BiTree *right, const void *data)
> > > > {
> > > >
> > > > bitree_init(merge, left->destroy);
> > > >
> > > > if(bitree_ins_left (merge, NULL, data) !=0) {
> > > >
> > > > /* Aqui da erro no merge quando executo erro de memoria full */
> > > >
> > > > return;
> > > > }
> > > >
> > > > Já procurei isso em vários lugares, e não acho o erro.
> > >
> > >
> > >  No mínimo precisamos saber qual o erro e o pedaço de código que gera
> > > esse erro.
> > >
> > >
> > > --
> > > Giovanni P. Tirloni
> > > http://www.tirloni.org
> > >
> > > -------------------------
> > > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> > >
> >
> >
> > --
> > Att,
> >
> > Rogério Schneider
> > +55 (55) 9985 2127
> > +55 (55) 3332 5923
> > +55 (55) 3321 1535
> >
> > MSN: stockrt em hotmail.com
> > ICQ: 78778973
> > GTalk: stockrt em gmail.com
> > Skype: stockrt
> > -------------------------
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >
>
>
> --
> Linux is for people who hate Windows,
> BSD is for people who love UNIX"
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


Mais detalhes sobre a lista de discussão freebsd