begin process at 2012 02 13 13:46:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Un tableau statique dans une méthode: c'est mal?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Un tableau statique dans une méthode: c'est mal?

samedi 21 avril 2007 à 19:56:36 | Un tableau statique dans une méthode: c'est mal?

harddisk



Bonjour,
j'ai une méthode qui retourne un int (code ci-dessous):chercher une couleur dans une main de cartes, une main comprenant en membre un tableau de carte:m_main, une carte ayant deux int membre: l'un contient la couleur, l'autre la valeur de la carte.

Sous Visual C++ express, a l'exécution j'ai un "Run-Time Check Failure #2 - Stack around the variable 'nbredecouleur' was corrupted." lorsque le return 0; est exécuté. Mais si je fais continuer, le programme fonctionne comme prévu.

Je ne comprend pas pourquoi, sachant qu'après l'avoir lancé en pas à pas et regardé attentivement, jamais l'indice de nbredecouleur n'a été dépassé.
Alors est-ce que c'est mal d'allouer statiquement un tableau dans une méthode(car a priori c'est au niveau de la libération du tableau que ça pose problème)

Voilà,
merci

Le code:


int Unemain::ReturnBestCard()
{
if(m_nombre>5) //m_nombre est membre de la class
{
    //premiere phase: on comtpe pour voir si la couleur tombe
    int nbredecouleur[5]; //lindice 0 sert a rien, le 1 pour le pic, le 2 pour le trefle,le 3 coeur, 4 carreau
    int couleurMax=0;//int qui contient le int de la couleur réalisée, on linitilaise a 0
    int valeurMax;
    //Init a 0 de nbredecoul
    for (int i=1;i<=4;i++)
    {
        nbredecouleur[i]=0;
    }
    //on  recense les couleurs
    for (int i=0;i<m_nombre;i++)
    {
       
      
        (nbredecouleur[m_main[i].GetCouleur()])+=1;//on augemnt de un la couleur correspodnante
    }

    //Il y en a qu'une seule fatalement qui est supérieur/egale à 5 donc c'ets la bonne dans ce cas
    for (int i=1;i<=4;i++)
    {
        if (nbredecouleur[i]>=5) {couleurMax=i;} //si on a une couleur alors c'ets uen couleur de couleurMax
       
    }


    //Deuxième phase: déterminer la carte la plus haute
    if (couleurMax!=0) //si on a effectivement une couleur
    {
        int rang=m_nombre;
        while((m_main[rang].GetCouleur())!= couleurMax)
        {
        rang--;
        }
    valeurMax=m_main[rang].GetValeur();
    cout<<"debug: couleur de "<<couleurMax<<" a "<<valeurMax<<endl;
    }
   
}
return 0;
}



samedi 21 avril 2007 à 19:59:56 | Re : Un tableau statique dans une méthode: c'est mal?

harddisk

J'ai oublié comment(et si c'est possible) éditer, mais je rajoute que ce code marche très bien(sans erreur de stack) si au lieu de le mettre dans une méthode, je le met dans une fonction "normale"(en passant les variables qu'il faut).


dimanche 22 avril 2007 à 00:11:24 | Re : Un tableau statique dans une méthode: c'est mal?

harddisk

Réponse acceptée !


Oula, shame on me
Après une journée de recheche entière(oui ca m'obsédais ce truc), des incantations, des tentatives pour comprendre comment se passe la libération des variables en fin de fonction... il se trouve que dans mon main j'ai initialisé à >4 une couleur(fautte de frappe), le m_main[i].GetCouleur() retournait 7, et mon tableau de taille 4 aime pas qu'on demande la 7 eme position.....

Voilà, comment perdre une journée ensolleillée :'(








Cette discussion est classée dans : int, couleur, tableau, main, nbredecouleur


Répondre à ce message

Sujets en rapport avec ce message

Tableau en C [ par Mickylord ] Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction plantage en utilisant le constructeur "new" [ par Ganaga ] Bonjour,J'utilise le constructeur new pour affecter un tableau d'entiers dans une boucle qui s'exécute plus de 10000x. Au bout d'un certain temps (lon Tableau à 2 dimensions en paramètre [ par BsEtZeOpLhD ] Bonjours, Voila mon problème : je n'arrive pas à passer une tableau a 2 dimensions en paramètre. Est ce que quelqu'un sais comment faire ? Merci voi Taille d'un pointeur ou d'un tableau ( très bizarre ) [ par thristam ] Bonjour à tous,Quand je veux connaitre la taille d'un tableau , je fais :int i[10];coutPas de problème Par contre , si je fais la même chose avec un p exclusion d'un Intervalle dans un tableau ... [ par pirana ] Bonjour à tous , j'aimerais sauté un intervale dans un textevoici mon code je pense que ca sera plus explicite :)data[]={01234567ABCDEFLI01234567ABCDE DLL C++ [ par alonsyl ] Bonjour,Je travaille en Visual Basic et j'essaie de créer une DLL C++ afin d'effectuer du calcul matriciel. Pour l'instant, je commence petit avec la comment affecter un tableau à un pointeur d'une classe? [ par cesdejong ] Bonjour,je débute un peu en C++ et je suis confronté à un problème pour lequel je ne trouve pas de solution élégante :class truc{...int* abscisse;int* Problème d'entrée (cin >>) dans un tableau de float [ par Oeil_de_taupe ] Hello tout le monde,désolé de vous importuné. Mais j'ai fait une toute petite source pour apprendre à allouer de la mémoire pour une variable puis de Allocation dynamique dans une fonction [ par Veovis ] Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl lister un tableau de string [ par minet03 ] Soyons bref, je suis en train de bosser sur un code qui liste les srting d'un tableau, seul problème c'est qu'il y a des problèmes !Voici mon code :vo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,246 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales