masBecas Lt

Registrado: 23 Oct 2003Mensajes: 98Ubicación: La Laguna, Tenerife
|
Publicado: Jue 22 Ene, 2004 8:08 pm Asunto: Diferentes resultados cuando ejecuto modo release y debug |
|
|
Hola.
Tengo un problema que me está dando muchos dolores de cabeza. Resulta que estoy haciendo un programita de simulación. Cuando lo compilo en modo debug y lo ejecuto funciona sin problemas, pero cuando quiero compilarlo en modo Release me empiezan a salir errores de accesos inválidos a memoria.
Como en modo Release no puedo hacer una ejecución paso a paso, mediante mensajitos de error he ido consiguiendo aislar el problema en una llamada a una función. Sin embargo (y esto es lo más gracioso de todo) poniendo un par de ShowMessage en la función para saber q línea en concreto era la q fallaba resulta q ya no da el fallo y termina su ejecución. Eso sí, al salir del programa sí me salen un par de accesos incorrectos.
Me imagino q resolver este problema es bastante complicado sin tener ninguna referencia más, así q pondré el código donde parece estar fallando:
| Código: |
// Esta función está dentro de una clase
// template <class T> class TCola
// con la q he implementado una cola circular.
// Esta función en concreto elimina un elemento del medio de la cola y
// desplaza el resto para dejarla con todos los elementos consecutivos
// Los campos q usa son:
// - elements: El array de objetos
// - first: El índice del primer objeto (cabeza de la cola)
// - last: El índice del primer hueco ("cola" de la cola)
// - size: Número de elementos
T *__fastcall remove(int pos) {
if (pos == first)
return remove();
if (last > first) {
if ((pos >= last) || (pos < first))
return NULL;
}
else {
if ((pos >= last) && (pos < first))
return NULL;
}
// Aquí ponía uno de los ShowMessage
last = (last > pos) ? last : last + size;
T *aux = elements[pos];
for (int i = pos; i < last; i++)
elements[i % size] = elements[(i + 1) % size];
last = (last - 1) % size;
// Aquí ponía otro de los ShowMessage
return aux;
}
|
Supongo q incluso así será bastante complicado, pero a ver si alguien ha tenido algún problema similar y puede ayudar. |
|