elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Una duda muy simple
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Una duda muy simple  (Leído 1,619 veces)
Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Una duda muy simple
« en: 7 Agosto 2014, 11:27 am »

Hola. Tengo una pregunta bastante simple, y es la siguiente:

Cuando declaro una variable (por ejemplo un int) en un bucle for, esa variable esta solo disponible dentro de este bucle, pero una vez acaba el bucle la variable se queda en la memoria? En ese caso si por ejemplo hacemos uso de varios bucles en un programa con varios "int", estamos consumiendo más memoria que si usamos solo un int para todos los bucles no?

Es una pregunta muy tonto, pero me gustaría saber la respuesta :)


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re:
« Respuesta #1 en: 7 Agosto 2014, 11:49 am »

Está solo disponible dentro del bucle, y al salir de él, se libera la memoria. Igual que dn una función.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Una duda muy simple
« Respuesta #2 en: 7 Agosto 2014, 12:05 pm »

Código
  1. for ( int i=0; i < 10; i++ )
  2. {
  3.  int valor = i + 1;
  4.  std::cout << valor << std::endl;
  5. }

En el ejemplo anterior hay dos variables, i y valor.

  • i existe de forma continuada durante toda la vida del bucle. Cuando el código sale del bucle la variable simplemente deja de existir y su memoria puede ser ocupada por otra variable... el mundo es así de cruel.
  • valor existe únicamente dentro de cada iteración del bucle, es decir, durante la ejecución de este ejemplo se van a crear 10 variables "valor". Cada una de estas instancias se eliminará al terminar la iteración correspondiente.

Fuera del bucle, por tanto, no existirá ninguna de estas dos variables. Si accedieses a las posiciones de memoria donde estaban ubicadas puede que aún se mantenga el último valor que tenían dichas variables... pero la memoria no está reservada y, por tanto, no está asegurado que puedas recuperar dicho valor.
En línea

Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re: Una duda muy simple
« Respuesta #3 en: 8 Agosto 2014, 16:08 pm »

Es decir, que resulta casi más practico utilizar vairables dentro del bucle que usar variables globales, me equivoco? Aunque en realidad se esta haciendo el mismo uso de memoria, pero he oído por ahí que es una costumbre muy mala usar variables globales si no es necesario. Gracias por las respuestas.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Una duda muy simple
« Respuesta #4 en: 8 Agosto 2014, 16:51 pm »

Simplemente, usa cada cosa en su momento.
Si sólo usarás el índice del bucle como contador DENTRO del bucle, pues se inicializa en el for. Si lo necesitas fuera, pues lo inicializas fuera.

Como dato, te digo que puedes hacer esto:

Código
  1. int main(){
  2.    int a=0;
  3.    {
  4.        int b=0;
  5.    }
  6. }

Puedes poner cuando quieras un par de llaves. Las variables que haya dentro de las llaves, desaparecerán cuando se cierren.
En línea

Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re: Una duda muy simple
« Respuesta #5 en: 8 Agosto 2014, 18:54 pm »

Simplemente, usa cada cosa en su momento.
Si sólo usarás el índice del bucle como contador DENTRO del bucle, pues se inicializa en el for. Si lo necesitas fuera, pues lo inicializas fuera.

Como dato, te digo que puedes hacer esto:

Código
  1. int main(){
  2.    int a=0;
  3.    {
  4.        int b=0;
  5.    }
  6. }

Puedes poner cuando quieras un par de llaves. Las variables que haya dentro de las llaves, desaparecerán cuando se cierren.

Interesante, no sabia que se podía hacer eso. Supongo que ya he aprendido algo más sobre c++. Gracias por la respuesta :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una duda simple
Programación Visual Basic
Jess_Kapria 2 3,444 Último mensaje 27 Octubre 2006, 00:41 am
por Jess_Kapria
Duda simple.
PHP
NaSaRiD15 2 1,736 Último mensaje 1 Septiembre 2008, 04:54 am
por SpiderNet
Duda simple
Scripting
soS_boludo 2 2,241 Último mensaje 14 Noviembre 2008, 15:38 pm
por soS_boludo
Duda simple
Materiales y equipos
Carloscmc 0 1,986 Último mensaje 11 Febrero 2009, 22:02 pm
por Carloscmc
Una duda simple
Programación C/C++
jairogon 3 2,360 Último mensaje 22 Mayo 2010, 00:59 am
por Debci
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines