Erreur : mémoire insuffisante

Résolu
cs_Finality Messages postés 76 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 22 janvier 2009 - 29 déc. 2007 à 10:14
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 - 29 déc. 2007 à 15:21
Bonjour tout le monde,

je suis actuellement confronté à une erreur que je trouve incompréhensible. Tout d'abord voilà le contexte : j'essai de créer un Tetris en VB (.NET) à l'aide d'une source sur ce site même (Netris).

Tout d'abord je créé un bitmap de fond, qui représentera l'état de mon jeu à chaque moment. Puis après je créé un objet block d'une classe personnalisée piece. Puis je lui applique la méthode "voir" correspondante à la classe "piece" :

Public Sub Voir(ByRef BitM As Bitmap)
    _Carre1.Voir(BitM)
    _Carre2.Voir(BitM)
    _Carre3.Voir(BitM)
    _Carre4.Voir(BitM)
End Sub, ----
(Coloration syntaxique automatique par Kenji)

Je précise que _Carre1, _Carre2, _Carre3, _Carre4 sont des objets créés lors de la création de mon objet block, et de classe "carre"

Voilà le code de la méthode voir relative à ma classe carre :

;   Public Sub Voir(ByRef BitM As Bitmap)
        Dim graph As Graphics = Graphics.FromImage(BitM)
        Dim graphPath As New GraphicsPath
        Dim brush As PathGradientBrush
        Dim surroundColor As Color()
        Dim rect As Rectangle

        rect = New Rectangle(Me.position.X, Me.position.Y, Me.Taille, Me.Taille)
        graphPath.AddRectangle(rect)

        brush = New PathGradientBrush(graphPath)
        brush.CenterColor = Me.CouleurDessus

        surroundColor = New Color() {Me.CouleurFond}

        brush.SurroundColors = surroundColor

        graph.FillPath(brush, graphPath)
    End Sub, ----
(Coloration syntaxique automatique par Kenji)

Le probleme est que quand je lance mon application, un message d'erreur apparait sur la ligne "        brush = New PathGradientBrush(graphPath)" et me dit que la mémoire est insuffisante. Mais quand je lance l'appli téléchargée (utilisant les mêmes méthodes), cela fonctionne

Quelqu'un pourrait-il me dire d'où cela provient, car ça me bloque dans mon projet

Merci pour votre aide
Cordialement
Kevin PERRIAT

3 réponses

cs_Finality Messages postés 76 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 22 janvier 2009
29 déc. 2007 à 12:16
Tout d'abord merci pour ta réponse

Ayant pris mon courage à deux mains, je me suis tappé un débugage pas à pas et j'ai trouvé le bug (stupide comme à chaque fois) : j'avais oublié de préciser la valeur de mon Me.Taille lol

Merci tout de même pour ton aide
Cordialement
Kevin PERRIAT
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
29 déc. 2007 à 10:20
Bonjour,

Je ne connais pas VB.Net,

Je dirais simplement que si ta sub voir est appelée plusieurs fois, tu crées autant de fois des Rect et Brush, sans (je ne le vois nulle part dans ton code) les détruire et ainsi relibérer de la mémoire!
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
29 déc. 2007 à 15:21
jmfmarques < Pour info, VB.NET dispose d'un garbage collector, parait-il assez efficace, mais encore eu l'occasion de le stresser un peu pour juger par moi-même
0
Rejoignez-nous