Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/12/2012, 02:24
Avatar de guzzano
guzzano
 
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 14 años, 3 meses
Puntos: 13
Respuesta: Función y devolver puntero

Listo! muchisimas gracias, fue un error mio con los datos que le di el debugger. Ahora, el problema como tal es hacer esto:

Código C:
Ver original
  1. char *nombre = mi_nombre();
  2. puts(mi_nombre)

Según leí es muy mala idea, de paso el debugger (ahora si, con los parametros bien, me manda error) preguntaré, ¿por qué es malo esto?

Los datos del debugger:
Código HTML:
Ver original
  1. ==7991== HEAP SUMMARY:
  2. ==7991==     in use at exit: 0 bytes in 0 blocks
  3. ==7991==   total heap usage: 16 allocs, 16 frees, 197,588 bytes allocated
  4. ==7991==
  5. ==7991== All heap blocks were freed -- no leaks are possible
  6. ==7991==
  7. ==7991== Use --track-origins=yes to see where uninitialised values come from
  8. ==7991== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
  9. ==7991==
  10. ==7991== 1 errors in context 1 of 2:
  11. ==7991== Conditional jump or move depends on uninitialised value(s)
  12. ==7991==    at 0x40BB529: ??? (in /lib/libc-2.16.so)
  13. ==7991==    by 0x80488CF: main (in /home/guzzano/pkgrmd/pkgrmd)
  14. ==7991==
  15. ==7991==
  16. ==7991== 1 errors in context 2 of 2:
  17. ==7991== Invalid read of size 4
  18. ==7991==    at 0x40BB51B: ??? (in /lib/libc-2.16.so)
  19. ==7991==    by 0x80488CF: main (in /home/guzzano/pkgrmd/pkgrmd)
  20. ==7991==  Address 0x42176ec is 4 bytes inside a block of size 6 alloc'd
  21. ==7991==    at 0x402A66D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
  22. ==7991==    by 0x8048BE4: search_package (in /home/guzzano/pkgrmd/pkgrmd)
  23. ==7991==    by 0x80488CF: main (in /home/guzzano/pkgrmd/pkgrmd)
  24. ==7991==
  25. ==7991== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)

Funciona perfecto, puts envia la cadena perfectamente a la pantalla, pero en lo que es el debugger me dice que tengo unos errores, ¿por qué pasa tal cosa?


Muchas gracias a todos por las respuestas,
saludos.