2013-06-03 2 views
0

J'ai rencontré ce problème: Echec de la vérification au moment de l'exécution # 2 - La pile autour de la variable était corrompue dans visual studio 12. J'essaye aussi ceci dans le codeblock mais ai fait face au même problème. Je cours mon code aussi dans ideone.com il montre l'erreur d'exécution. Aide moi ? mon code est:Échec de vérification au moment de l'exécution # 2 - La pile autour de la variable était corrompue

#include<iostream> 
    #include<stdio.h> 
    #define MAX 50 
    using namespace std; 
    typedef struct 
    { 
    long var[20]; 
    long pos; 
    }stack; 

    void init_stack(stack *st) 
    { 
     long i; 
     for(i=0; i<MAX; i++) 
     st->var[i] = -1; 
     st->pos = 0; 
    return ; 
    } 

    void push(stack *st, long item) 
    { 
    if(st->pos == MAX) 
    { 
     printf("stack overflow \n"); 
    } 
    else 
    st->var[st->pos+1] = item; 
    st->pos++; 
    return ; 
    } 

    void pop(stack *st) 
    { 
    //if(empty(st)) 
    if(st->pos == 0) 
     printf("stack underflow \n"); 
    else 
    st->var[st->pos] = -1; 
    st->pos--; 
    return ; 
    } 

    long top(stack *st) 
    { 
    long temp; 
    temp = st->var[st->pos]; 

    return temp; 
    } 

bool empty(stack *st) 
{ 
    if(st->pos==0) 
     return true; 
    else 
     return false; 
} 

int main() 
{ 
    stack s; 
    long i, n=9, t; 
    init_stack(&s); 
    printf("STACK PUSH\n"); 
    for(i=1; i<=n; i++) 
    { 
     push(&s, i); 
     t = top(&s); 
     printf(" %ld\n", t); 
    } 
    printf("STACK POP\n"); 
    for(i=1; i<=n; i++) 
    { 
     t = top(&s); 
     printf(" %ld\n", t); 
     pop(&s); 
    } 
    return 0; 
} 

+0

MAX est de 50, et vous faire var être un tableau de 20 éléments. – Infested

Répondre

1

Vous déclarez var que la tenue 20 éléments, mais vous itérer MAX fois dessus, MAX étant défini comme 50. Ce n'est probablement pas ce que tu voulais faire. Essayez:

long var[MAX];

+0

merci mec @ Nbr44. Erreur stupide . :) –

Questions connexes