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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  C# - Problemas con la memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C# - Problemas con la memoria  (Leído 5,723 veces)
anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
C# - Problemas con la memoria
« en: 15 Octubre 2009, 04:26 am »

Hola a todos, estoy empezando con el C# y me he puesto como objetivo desarrollar un blackjack, y me encuentro con que cada 3 o 4 partidas el juego se queda colgado...

He estado buscando y creo que el problema viene dado porque cuando hago:

Código:
Cartas carta1 = new Cartas();

Me reserva un nuevo espacio en la memoria, quando lo que quiero es que me la sobreescriba.
Para solucionarlo primero pense en detectar si el objeto ya estaba creado, y en ese caso modificarlo.

Código:
if(carta1 == null){
       carta1 = new Cartas();
}else{
       carta1.Carta();
}

El metodo Carta, realiza lo mismo que el constructor, pero asi edito el ya existente y me ahorro comer mas memoria.

No funciona  :¬¬

Sigo buscando, y saco la conclusion de que tengo dos opciones
- Evitar que reserve mas espacio en la memoria (hasta ahora fracaso u.u)
- Conseguir eliminar ese espacio que ocupa antes de ocupar uno nuevo.

Con lo segundo he intentado poner los objetos en null y utilitzar metodos para "llamar" al GC y no ha habido manera.

A ver si alguien puede darme algo de luz >_<


En línea

sangano

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: C# - Problemas con la memoria
« Respuesta #1 en: 18 Octubre 2009, 03:47 am »

Hola, estas seguro que se queda pegado por falta de memoria?, podrias poner el codigo del construtor para ver que es lo que hace.

 Supestamente el metodo Cartas(), hace lo mismo que el constructor, donde guardas esa instancia, pon tambien el codigo del metodo, asi poder ayudarte mejor.

saludos.


En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: C# - Problemas con la memoria
« Respuesta #2 en: 18 Octubre 2009, 04:18 am »

No puedes llamar al metodo si no tienes el objeto creado... =S
En línea

anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
Re: C# - Problemas con la memoria
« Respuesta #3 en: 18 Octubre 2009, 05:01 am »

Código:
// Constructor
public Cartas(Random rnd) {
            this.palo = rnd.Next(1, 5);
            this.numero = rnd.Next(1, 14);
            // Construim ruta imatge a partir de les variables palo i numero
            this.imatge = ruta + this.palo + "_" + this.numero + ".JPG";
}
// Metodo
public void Carta(Random rnd) {
            this.palo = rnd.Next(1, 5);
            this.numero = rnd.Next(1, 14);
            this.imatge =ruta + this.palo + "_" + this.numero + ".JPG";
}



Estoy seguro de que no llamo al metodo sin haber creado el objeto. Ademas, el debuger me tiraria nullpointer.

La verdad es que si no es por memoria no se porque demonios se me puede quedar pegado.



Edit: Solucionado, no entiendo porque, pero al hacer esto ha dejado de quedarse pegado.

He pasado la creacion de el objeto de la clase Blackjack al metodo nuevoJuego. Antes lo ponia como un atributo.
« Última modificación: 18 Octubre 2009, 05:09 am por anarquistadel89 » En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: C# - Problemas con la memoria
« Respuesta #4 en: 18 Octubre 2009, 05:09 am »

Tienes razon lei mal el if  :xD
pero el rnd esta nulo ese parametro debes crear el objeto random xD

Código
  1. public void Carta(Random rnd) {
  2. rnd= new Random();
  3.            this.palo = rnd.Next(1, 5);
  4.            this.numero = rnd.Next(1, 14);
  5.            this.imatge =ruta + this.palo + "_" + this.numero + ".JPG";
  6. }
  7.  
« Última modificación: 18 Octubre 2009, 05:10 am por BadDevil » En línea

anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
Re: C# - Problemas con la memoria
« Respuesta #5 en: 19 Octubre 2009, 01:21 am »

El Random ese ya lo construyo en la clase BlackJack. Es decir
Código
  1. class Blackjack{
  2.  
  3. ....
  4.  
  5.       Random rand = new Random((int)System.DateTime.Now.Ticks);
  6.       if(carta1 == null){
  7.            carta1 = new Cartas(rand);
  8.       }else{
  9.            carta1.Carta(rand);
  10.       }
  11.  
  12. ...
  13. }
  14.  
En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: C# - Problemas con la memoria
« Respuesta #6 en: 19 Octubre 2009, 21:45 pm »

Bueno aunque ya se soluciono nunca esta demas que sepas que son:
Los Destructores.
Garbage Collector.
La interfaz IDiposable y su metodo Dipose.

Esto te ayuda a el eliminar memoria no deseada.
Algunos creen que el Garbage Collector lo hace todo instantaneamente y eso no siempre ocurre, por eso es aconsejable destruir los objetos si consumente mucha memoria o recursos externos a la aplicacion.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia
En línea


pichucho87

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: C# - Problemas con la memoria
« Respuesta #7 en: 16 Mayo 2013, 04:21 am »

Disculap donde puedo ver el codigo completo de este trabajo q esta interesante?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problemas con mi memoria...
Dudas Generales
maxtextla 1 2,049 Último mensaje 23 Diciembre 2010, 23:32 pm
por __Alvaro 2015__
Problemas con Memoria USB 16 GB
Hardware
Angel Zero 4 2,557 Último mensaje 20 Noviembre 2013, 16:36 pm
por Angel Zero
problemas de cpu y memoria
Windows
billgay 1 1,778 Último mensaje 27 Febrero 2018, 07:55 am
por PixelKingJ23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines