Hi all,
I'm having a problem with a pointer struct to pointer passed in a function...
We'll, better show first.
I hope this amount of code will suffice to explain my point: The assertion fails after some loops in the 9th lineCode:void defCompraBuscaLocal ( int * vCOMP, Instancia * I, Solucao * S, VetDeListas * K, int prod ) { Noh * p = 0; int i=0, aux=0, aux_DEM=0, qtmcd=0, qtdCOMP=0; aux_DEM = I->DEM[prod]; qtmcd = I->merc; for(i=0; i<qtmcd; i++) { assert(S->binMcd != 0); vCOMP[i] = 0; } p = (K->VL[prod])->cab; while ( p != 0 ) { if ( S->binMcd[p->dado] > -1 ) { if ( aux_DEM > 0 ) { aux = detMinimo(aux_DEM, I->DISPB[prod*qtmcd+p->dado]); vCOMP[p->dado] = aux; aux_DEM = aux_DEM - aux; } else { qtdCOMP = somaElemVetor(vCOMP,qtmcd); vCOMP[0] = qtdCOMP; return; } } /*if ( S->binMcd[p->dado] == 1 )*/ p = p->prox; } /*while ( p != 0 )*/ qtdCOMP = somaElemVetor(vCOMP,qtmcd); vCOMP[0] = qtdCOMP; return; }
The struct S isCode:for(i=0; i<qtmcd; i++) { assert(S->binMcd != 0); vCOMP[i] = 0; }
Running GDB I getCode:typedef struct Solucao { int fo_total; int fo_comp; int fo_transp; _Bool fac; int * binMcd; Lista * sol; int * COMP; } Solucao;
Translation of the last part 'Arquivo ou diretório não encontrado'='file or directory not found'.Code:Breakpoint 1, defCompraBuscaLocal (vCOMP=0x61e010, I=0x609910, S=0x61e030, K=0x6096d0, prod=6) at heur_const_atpp.c:148 148 Noh * p = 0; (gdb) break 155 Ponto de parada 2 at 0x403b94: file heur_const_atpp.c, line 155. (gdb) continue Continuing. Breakpoint 2, defCompraBuscaLocal (vCOMP=0x61e010, I=0x609910, S=0x61e030, K=0x6096d0, prod=6) at heur_const_atpp.c:155 155 for(i=0; i<qtmcd; i++) { (gdb) print S->binMcd $1 = (int *) 0x6207a0 (gdb) print S->COMP $2 = (int *) 0x61e080 (gdb) print *S->binMcd $3 = 13 (gdb) next 156 assert(S->binMcd != 0); (gdb) 157 vCOMP[i] = 0; (gdb) 155 for(i=0; i<qtmcd; i++) { (gdb) 156 assert(S->binMcd != 0); (gdb) 157 vCOMP[i] = 0; (gdb) 155 for(i=0; i<qtmcd; i++) { (gdb) 156 assert(S->binMcd != 0); (gdb) 157 vCOMP[i] = 0; (gdb) continue Continuing. heur_const_atpp: heur_const_atpp.c:156: defCompraBuscaLocal: Assertion `S->binMcd != 0' failed. Rodando ../Clase5-SymCapTPP/CapEuclideo.50.50.1.1.tpp Program received signal SIGABRT, Aborted. 0x00007ffff780aa75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 ../nptl/sysdeps/unix/sysv/linux/raise.c: Arquivo ou diretório não encontrado. in ../nptl/sysdeps/unix/sysv/linux/raise.c
I did some checking and found out that S is not NULL after the assertion, but S->COMP and S->binMcd are.
If anyone can point a direction I would be very thankful.
Thanks a lot,
Abel



LinkBack URL
About LinkBacks


