Dev - C++ - Duda con el compilador GCC

 
Vista:
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 24/09/2020 18:10:17
Buenas, espero que se encuentren bien.
Me ha pasado una curiosa anomalía con el compilador GCC. Mientras estaba programando, me di cuenta de que algunas cosas cuando compilaba y ejecutaba pasaban cosas raras, por ejemplo, a veces la consola imprimía cosas que no debería; tratando de ver qué podría estar causando el problema, comenté algunas líneas de código, estas eran declaraciones, y fue de mi sorpresa que al compilar y ejecutar, ese problema había desaparecido, realmente me explotó la cabeza; intentaba tratar de dar una explicación, pero no podía, no me cuadraba, busqué en Google y lo que me apareció fue de que al parecer es por un tema de "basura" en la memoria, de hecho existe un comando relacionado con eso. Mi pregunta es, ¿hay algo más que causa el "problema"?, ¿qué otras cosas lo podría causar?, ¿alguna recomendación que debería tomar en cuenta para que esto no siga sucediendo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de HdbSoft
Val: 3
Ha disminuido su posición en 6 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por HdbSoft (1 intervención) el 24/09/2020 18:18:07
Muy buenas Codej, ¿me puedes detallar lo que imprmía tu programa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 24/09/2020 20:12:16
Lamento no dar esa información antes.
Mejor te paso una parte del código.
1
2
3
4
5
//variables
int x = 0, y = 0, dir = 0;
char jg= 'x';
char mapPos[2][2];
mapPos[0][0] = jg;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
while(cont < 5){
    for(int i = 0; i < 2; i++){ //imprimir casillas
        for(int j = 0; j < 2; j++){
            if(mapPos[j][i] == jg){
                cout<<"["<<jg<<"]";
            }else{
                cout<<"[ ]";
            }
        }
        cout<<"\n";
    }
    cin>>dir;
    switch(dir){
        case 17:
            if(x < 1){
                x++;
                mapPos[x][y] = jg;
                mapPos[x-1][y] = ' ';
            }else{
                x = 0;
                mapPos[x][y] = jg;
                mapPos[(sizeof(mapPos))/2-1][y] = ' ';
            }
        break;
    }
    cont++;
}

Como puedes observar, se debería de imprimir lo que son los corchetes que hacen de casilla y un solo símbolo.
Lamentablemente no tengo el código que me daba ese problema, debido a que ya lo resolví y guardé todo. También tenía dos variables sin usar ya asignadas con un valor 0, además debajo del while, había declaraciones de variables, esas tan solo eran variables para comprobar cosas; por si sirve de algo, había dos declaraciones que medían el largo de la matriz "mapPos", con un "sizeof()", al igual que estas se imprimían en pantalla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Alfil (1444 intervenciones) el 24/09/2020 18:27:44
Probablemente tengas algún error en el código,. pégalo y trataremos de corregirlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 24/09/2020 20:16:12
No hay ningún error lógico en mi código, he revisado una y otra vez y nada. Arriba compartí el código.
Mi única teoría es que podría ser el uso innecesario de variables, y el compilador da esos raros "errores" debido a cosas de memoria o algo por el estilo, arriba hablo un poco más de ello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Rodrigo (539 intervenciones) el 24/09/2020 20:49:25
Hay mas cases en ese switch?

No tiene sentido tener un switch con 1 sola opcion, por lo que supongo que ese switch esta censurado y en la censura esta el error escondido.
Sera asi?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 25/09/2020 00:03:26
Estoy trabajando en el código y ese "error" surgió mientras compilaba y ejecutaba. No creo que sea el switch, ya que él solo es quien controla la entrada de datos y manipulación de los mismos, sería más lógico que el problema esté en la impresión, pero en este caso, no lo es. Y repito, dudo mucho que sea un error lógico en el código, ya que también he probado el mismo código en compiladores online y no hay problema, en cambio, cuando compilaba con GCC, pasaba ya lo mencionado; la solución fue comentar unas variables que no eran de un uso necesario, y es ahí en donde todo funcionó correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Alfil (1444 intervenciones) el 24/09/2020 21:11:49
Mirando el código así a groso modo no le encuentro mucho sentido, ¿cual es el enunciado del problema (objetivo del código)?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 25/09/2020 00:15:52
La idea no es centrarse mucho en el programa, sino más bien en el compilador, que es ahí en donde tengo mi duda, pero bueno, simplemente simula un movimiento de un carácter por pantalla, según que botón se presione y dé Enter.
En esta imagen quizás puedas entender a lo que me refiero:
k6H7dqM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Rodrigo (539 intervenciones) el 25/09/2020 05:37:34
La ultima respuesta me sigue haciendo pensar que el codigo que mostraste esta censurado y que el problema esta en el codigo que no incluiste.

El echarle la culpa al compilador es un clasico. En mi experiencia, lo mas probable es que el problema este en tu codigo, no en el compilador.

Mi explicacion mas generica, sin tener a la vista el codigo, es que alguna de tus instrucciones estan yendo mas alla o mas aca de los limites del arreglo. Es posible que instrucciones que no tocan explicitamente el arreglo, pero que se comportan mal con la memoria y no consideran limites, esten pisoteando la memoria asignada al arreglo y este cuando se le instruye imprimir muestra lo que tiene y ves basura en consecuencia.

Hay algunas herramientas que permiten instrumentar tu codigo para descubrir mas o menos automaticamente cuando estas haciendo esto (sin querer).

Podrias ahorrarte parte de la investigacion si compartieras el minimo codigo que es capaz de ejecutarse y mostrar el error, si es que no quieres compartir todo o si es muy largo para ponerlo en un post.

Lo que se ve hasta ahora no permite deducir mucho, y tienes toda la razon, no parece razonable que escriba basura, pero esta reduccion/simplificacion no es lo que corresponde hacer cuando investigas un problema (o bien cuando preguntas en un foro buscando ayuda).

Suerte en la investigacion!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 26/09/2020 04:36:25
De verdad lamento no tener el código con ese "error".
En la parte en donde mencionas acerca de que algunas instrucciones que estén no interactuando directamente con la matriz puedan causar el problema me hace mucho sentido, recuerdo que tenía dos líneas al final del código con un "sizeof()", una para ver el total de largo de la matriz y otra para ver también el largo de la matriz y hacer una operación de división con esta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda con el compilador GCC

Publicado por Tom (65 intervenciones) el 25/09/2020 08:55:39
El error surgía mientras compilabas y ejecutabas ...
¿ Sabes que son dos procesos distintos ?
Así que ... haz memoria .... esas cosas tan extrañas ¿ pasaban al compilar o al ejecutar tu programa ?
Si pasaban al ejecutar hay un 99,9% de probabilidad de que tengas algo mal en tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Codej
Val: 25
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con el compilador GCC

Publicado por Codej (8 intervenciones) el 26/09/2020 04:39:54
Sé que compilar y ejecutar son dos cosas distintas, pero solo lo mencionaba como un pequeño detalle.
Pasaba al ejecutar, pero un usuario me dio una explicación que me ha hecho bastante sentido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar