Título: La memoria no se inicializa en cero de Forma Automatica Publicado por: AlbertoBSD en 8 Agosto 2016, 04:24 am Repitan despues de mi...
La memoria no se inicializa en 0 de forma automatica. Los arreglos no se inicializan en 0 de forma automatica. Las variables no se inicializan en 0 de forma automatica. Se que es un tema tanto repetitivo y es el causante de muchos errores de programacion. No existe ninguna garantia de que la memoria este inicializada en 0 todas las veces, hay ocasiones en la que si lo esta y hay ocasiones en la que no esta veamos este ejemplo, el cual muestra de un arreglo de 20 elementos los que su valor inicial no sea 0, Código
La salida de ese codigo compilado con GCC para windows es: Código: La posicion 0 del arreglo no esta inicializada su valor actual es 4200160 Y la segunda vez que lo ejecute fue Código: La posicion 0 del arreglo no esta inicializada su valor actual es 4200160 Como ven algunos valores cambiaron y otros se mantiene similares.. Depende del programador inicializar la memoria correctamente, o por lo menos estar cociente de que es posible que tenga basura en la memoria. Una forma de inicializar en 0 el arreglo mencioanado al momento de declararlo es: Código
otra forma es utilizar las funciones para inicializar con X valor la memoria Por ejemplo para inicializar con 0: Código Saludos! Título: Re: La memoria no se inicializa en cero de Forma Automatica Publicado por: class_OpenGL en 8 Agosto 2016, 04:59 am Jajaja, por eso yo inicializo todo lo que puedo xD En C++ la cosa está más sencilla en las clases por los constructores, pero igualmente hay que inicializar siempre!! Háganle caso a AlbertoBSD, y se ahorrarán muchos disgustos
Título: Re: La memoria no se inicializa en cero de Forma Automatica Publicado por: + 1 Oculto(s) en 11 Agosto 2016, 17:40 pm sucede lo mismo con la clase vector? o list en java?
Título: Re: La memoria no se inicializa en cero de Forma Automatica Publicado por: AlbertoBSD en 11 Agosto 2016, 18:41 pm No creo, estas clases tienen sus constructores y no puedes acceder a posiciones donde no se han inicializado con un valor.
El detalle radica en que cuando aprenden a programar nunca les enseñan a inicializar la memoria y luego vienen aqui a preguntar por que falla su codigo. Saludos! Título: Re: La memoria no se inicializa en cero de Forma Automatica Publicado por: + 1 Oculto(s) en 11 Agosto 2016, 21:50 pm java ya es muy elaborado en ese aspecto
hice un copy paste hacia java Código
el resultado es nada, es decir todos los numeros son ceros del arreglo slds Título: Re: La memoria no se inicializa en cero de Forma Automatica Publicado por: ivancea96 en 12 Agosto 2016, 00:04 am Sin embargo, inicializarlo siempre a mansalva también es un problema de rendimiento.
Cada cosa en su momento. Título: Re: La memoria no se inicializa en cero de Forma Automatica Publicado por: AlbertoBSD en 12 Agosto 2016, 00:38 am Claro obviamente no tenemos que abusar, por ejemplo si sabemos que siempre vamos a Inicializar "Y" posición de un arreglo X Antes de realizar cualquier tipo de operaciones con ella o de leerla, pues no hay necesidad de inicializar en 0 todo el Arrglo X..
Por ejemplo tenia un Codigo de Grafos donde inicializaba en 0 todo un Nodo unos cuantos miles de millones veces, y el programa tardaba X cantidad de tiempo, posteriormente lo hacia con memoria SIN inicializar y el programa funcionaba hasta 4 veces mas rápido y claro solo Leia Datos una vez que sabia que ya habían sido inicializados correctamente. El tema lo publique por qu hay usuarios que no están cocientes de que la memoria puede tener basura y luego vienen aqui a preguntar por que su programa falla, o veces hace "ciertas" cosas y a veces no las hace.. En fin. Saludos! |