Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Error impredecible de instruccion en memoria

Hola a todos, hace dias que observo que tengo un error que surge de forma aleatoria, pero siempre cuando pulso un boton que ejecuta unas determinadas funciones.

Entrando en detalle, el botón desactiva unos elementos que tengo en el formulario principal (cosa donde no veo problema) y notifica al dispositivo USB que se apague, y acto seguido cierro la comunicación.

No sabría decir cuándo obtengo este error porque por más que lo intento provocar no consigo que salga para darme cuenta en qué linea sale, ya que como comento, la acción que realiza el botón no es nada raro, lo más que me hace sospechar es cuando cierro la comunicación usb pero vamos tampoco estoy seguro.

Esa acción la realizo en otros momentos y sí que funciona, por lo que mi grado de incertidumbre es aun mayor.

Mirando por internet dicen q puede deberse a un problema de algun puntero mal referenciado.

Mi pregunta es si efectivamente el error se puede deber a esto o si puede deberse a otra cosa.

Si es por problemas de punteros, lo único asi que me hace dudar que pueda pasar es cuando llamo a la funcion que la tengo en otro .cpp

Esta es la funcion que tengo en MiLibreria.cpp
Código:
int apagarLector(char softwareID) {
...
}
y asi es como la llamo:

pongo un include
#include "MiLibreria.cpp"

Código:
resp= apagarLector(miChar);
donde miChar lo tengo en un define en MiLibreria.h

Alguna idea de por qué se puede producir este error?


Cualquier comentario sera bienvenido!, un abrazo!
Responder Con Cita
  #2  
Antiguo 21-06-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
He capturado el error en diferentes ejecuciones, lo muestro en el JPG

Última edición por mizzard fecha: 14-12-2011 a las 20:52:38.
Responder Con Cita
  #3  
Antiguo 21-06-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Efectivamente el error parece ser por punteros. Pero con más insertidumbre que la tuya nos dejas porque no proporcionas suficientes datos.

Yo te aconsejaría que revisaras las operaciones con punteros que estés realizando.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 21-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues como dice Chris, es difícil saber qué pasa sin mayores datos. Pero podrías ver de qué forma se accede al dispositivo USB. Posiblemente "algo" en tu código sigue intentando acceder aún cuando tú ya lo apagaste.

// Saludos
Responder Con Cita
  #5  
Antiguo 21-06-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Indudablemente el problema está en un puntero. Posiblemente en el uso de uno no inicializado correctamente, o que apunta descontroladamente.

Con el código que expones no se puede saber. No es problema que usas un archivo.cpp realizando #include "MiLibreria.cpp" o añadiendolo en el proyecto, es lo mismo. Ese no es el origen del problema.

Es posible que el error esté en el código de MiLibreria.cpp. ¿Lo escribiste tu o llama a funciones de alguna dll?

Revisa el código paso a paso, asignaciones de puntero, objetos que se usan sin estar creados, sumas con punteros, cierre prematuro de Handles... Piensa que el error no tiene que saltar justo en el punto de un código erróneo sino mas tarde. Depurar los errores de punteros no siempre es fácil, debes ser muy cuidadoso a la hora de escribir el código.

Saludos.
Responder Con Cita
  #6  
Antiguo 22-06-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Hola, ante todo muchas gracias por las respuestas, perdonad si apenas he expuesto codigo, lo que pasa es que realizo muchas tareas y claro poner todas implica mucho detenimiento y un hilo demasiado largo....


He estado realizando numerosas pruebas y como el error sale de forma inesperada, no puedo detallar exactamente el motivo por el cual sale, ya que parece ser q no es solo usb... aunque no lo tengo claro.


Mi idea principal era preguntar cual podria ser el origen del error, si es por tema de punteros ya se por donde echarle un ojo.

Otra cosa que he observado, es que si compilo mi programa para poder ser usado en otra máquina (sin las dependencias) y ejecuto el exe, he estado un rato "puteandolo" intentando simular las secuencias q provocaban el error y por el momento no he visto que apareciese.

Mi pregunta es (a falta de seguir haciendo pruebas antes de sacar conclusiones precipitadas), ¿es posible que en modo debug salgan estos errores (compilando con dependencias) y cuando se compila sin dependencias y se ejecuta el exe sin ejecutar el c++Builder no aparezcan estos errores?

No se si tiene mucho sentido la pregunta, es simplemente por ir descartando.


PD: Ahora me ha salido el error.... (yo que me habia hecho ilusiones)... ¿Sería interesante probarlo en otro pc?, lo digo pq el mio que es en donde estoy desarrollando el proyecto, a veces me da problemillas y se me queda colgado... o este tipo de errores implica revisar el codigo muy muxo pq tb saldra en la otra máquina??


Muchisimas gracias y un abrazo!

Última edición por mizzard fecha: 22-06-2011 a las 12:54:54.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error de memoria Vlady Impresión 1 02-05-2011 06:58:08
error de memoria marcos_0586 Varios 3 20-07-2010 06:31:55
Error de sintaxis en la instrucción INSERT INTO Ledian_Fdez C++ Builder 1 14-04-2009 20:26:35
Error de memoria nelem Varios 0 29-07-2008 07:27:47
Error de Memoria pockelsm3 Varios 5 29-04-2008 20:56:17


La franja horaria es GMT +2. Ahora son las 01:22:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi