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

 C Discussion :

erreur bizzare !


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut erreur bizzare !
    Bonjour, je code un programe en C sous Visual Studio.
    La chose qui est tres surprenante c est que quand je lance mon programe a partir de windows, il plante tand dis que si je le lance a partir de Visual (en cliquant sur 'Debug'), mon programme ne plante pas,
    Aucune erreur de compilation.
    Quand je lance sur windows, sa m affiche l erreur: Envoyer, Ne pas envoyer.
    J'ai cherche, et j'ai trouve l endroit de l'erreur (je l'ai trouve en mettan en commentaire bloc par bloc de code et je regardait si sa plantait ou pas)

    Je vous met les parties du code qui sont utlisee:

    Les variables globales:

    char in_buffer[128];
    llist l_user;

    avec

    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
    typedef struct user user;
    struct user
    {
     
        int index;
        int t_index;
        BOOL connected;
        LPCTSTR ip;
        BOOL p_protected;
        LPCTSTR u_name;
        struct user *next;
     
    };
     
     typedef user* llist;
    et les deux fontions mises en jeu:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    void split_on_ur_users(char* cache,int clas,int len)
    {
          int i,j,k;
          int totals,new_len;
          char* rest;
          char** temp;
          char* copy1;
          char* copy2;
          totals=0;
          temp=NULL;
          for(i=0;i<len;i++)
          {
                if(cache[i]==SEP)
                {
                    cache[i]=0;
                    rest=&cache[i+1];
                    break;
                }
          }
          totals=atoi(cache);
          if(totals!=0)
          {
                temp=(char**)malloc(totals);
                if(!temp)
                {
                    ..
                }
                new_len=len-strlen(cache);
                j=0;
                k=0;
                temp[0]=rest;
                for(i=0;i<new_len;i++)
                {
                    if(rest[i]==SEP)
                    {
                            if(j==1)
                            {
                                k++;
                                rest[i]=0;
                                temp[k]=&rest[i+1];
                                j=0;
                            }
                            else
                            {
                                j++;
                            }
                    }
                }for(i=0;i<totals;i++)
                {
                    copy1=NULL;
                    copy2=NULL;
                    copy1=temp[i];
                    k=0;
                    for(j=0;j<new_len;j++)
                    {
                        if(temp[i][j]==SEP)
                        {
                            copy2=&temp[i][j+1];
                            temp[i][j]=0;
                            break;
                        }
                    }
                    if(l_user==NULL)
                    {
                                l_user=add_user(NULL,atoi(copy1),0,copy2,"",FALSE,TRUE);
                    }
                    else
                    {
                                l_user=add_user(l_user,atoi(copy1),0,copy2,"",FALSE,TRUE);
                    }
     
                }
          }
     
    }
     
    et
     
    llist add_user(llist linked_user,int indx,int t_indx,char* ipad,char* nam,BOOL prtcd,BOOL cnntd)
    {
        user* new_user=malloc(sizeof(user));
        if(!new_user)
        {
           ...
        }
        (*new_user).index=indx;
        (*new_user).t_index=t_indx;
        (*new_user).connected=cnntd;
        (*new_user).ip=ipad;
        (*new_user).p_protected=prtcd;
        (*new_user).u_name=nam;
        (*new_user).next=linked_user;
        return new_user;
    }
    Mon programme alors plante quand j appele:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    split_off_r_users(&in_buffer[1],0,strlen(in_buffer));
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Quand tu travailles en mode Debug, en général, des zones sont initialisées par défaut avec des \0, ce qui évitent les plantes (chaines de caractères, pointeurs..), ce qui n'est pas forcément le cas quand tu lances ton exe directement sous Windows. Cherche peut-être de ce côté.
    Es-tu sûr de tous tes copy et autres ?
    Tu ne libères jamais temp.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void split_on_ur_users(char* cache,int clas,int len)
    {
    ...
          char** temp;
    ...
                temp=(char**)malloc(totals);
    ...
    tu alloues totals char et non pas totals char*
    Probablement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temp=malloc(totals* sizeof(char*));

Discussions similaires

  1. [MySQL] Erreur bizzare undefined
    Par abdelilah dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 30/03/2009, 21h58
  2. JSP (Erreur bizzare)
    Par Sceener dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 31/12/2008, 11h40
  3. File Attachement Control: erreur bizzare
    Par must19 dans le forum SharePoint
    Réponses: 1
    Dernier message: 27/08/2008, 18h12
  4. [C::B-Linux] Erreur bizzare
    Par Goundy dans le forum C
    Réponses: 16
    Dernier message: 03/04/2006, 16h12
  5. Question facile, erreur bizzare lors d'un Left, Top
    Par SpiderAlpha dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2004, 12h56

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