IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

[VC++2005 express]Run-Time Check Failure #2


Sujet :

Visual C++

  1. #1
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut [VC++2005 express]Run-Time Check Failure #2
    Bonjour

    j'ai un projet avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include "tuto3.h"
     
    int main(int argc, char *argv[])
    {
    	long num[55];
    	srand((unsigned)time(NULL));
    	for (int i=0;i<=55;i++)
    	{
    		num[i]=rand()%1000;
    		printf("%ld\n",num[i]);
    	}
    	printf("afficher le resultat :\n");
    	system("PAUSE");
    	printf("voilà: %ld",somme(num,54));
            return 0;
     
    }
    long somme(long nums[], long taille)
    {
    	long resultat=0;
    	for(int i=0;i<=taille;i++)
    		resultat+=nums[i];
    	return resultat;
    }
    je le compile et il s'execute normalement jusqu'à la fin, mais là, il m'affiche une fenêtre d'erreur qui me propose d'arreter ou de continuer
    :
    Run-Time Check Failure #2 - Stack around the variable 'num' was corrupted.
    ...
    si j'arrete, il me pointe la dernière ligne du main (au niveau de l'acollade fermée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	printf("voilà: %ld",somme(num,54));
    	return 0;
    }//<--là
    si je lui dis de continuer, il s'arrete normalement. la fin du journal d'erreur est:
    [...]
    Run-Time Check Failure #2 - Stack around the variable 'num' was corrupted.
    Le programme '[3716] tutozero3.exe: Natif' s'est arrêté avec le code 0 (0x0).

    si vous aviez une idée de la nature de l'erreur...

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Ton tableau 'num' a pour taille 55 mais tu le parcours de 0 à 55 compris dans la première boucle for, ce qui fait 56 valeurs.
    Du coup la 56e valeur est écrite en dehors du tableau, donc par-dessus autre chose qui s'en trouve fort corrompu.

    MAT.

  3. #3
    Membre éclairé
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Points : 756
    Points
    756
    Par défaut
    Exact, il faut que tu fasses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (int i=0;i<55;i++)
    Au lieu de l'opérateur '<='

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    effectivement, merci beaucoup.

    j'ai trop de vielles habitudes de basic (quand on déclare un tableau 55, il à 56 valeur, de 0 à 55...)

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/02/2009, 11h54
  2. Stack corrupted - Run-Time Check Failure
    Par poukill dans le forum C++
    Réponses: 2
    Dernier message: 16/07/2008, 23h31
  3. erreur Run-Time Check Failure #3
    Par ffcool21 dans le forum C++
    Réponses: 7
    Dernier message: 29/04/2008, 16h34
  4. probleme avec C++ Run-Time Check Failure #3
    Par acnalbasac dans le forum C++
    Réponses: 3
    Dernier message: 14/04/2007, 14h57
  5. Run-Time Check Failure #2
    Par -Mod- dans le forum DirectX
    Réponses: 5
    Dernier message: 10/08/2006, 08h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo