Segfault ?

Segfault ? - C - Programmation

Marsh Posté le 03-04-2006 à 18:27:05    

Bonjour,
 
voilà mon code :
 

Code :
  1. int explode(char split, char *input, char ** tP)
  2. {
  3. int i = 0;
  4. tP[0] = input;
  5. for (i = 0; *input; *input++) {
  6.  if (*input == split) {
  7.   i++;
  8.   *input = '\0';
  9.   tP[i] = input+1;
  10.  }
  11. }
  12. return i;
  13. }


 
Que j'apel comme ceci :
 

Code :
  1. char **tP;
  2. ...
  3. nTok = explode(' ', pSock, tP);


 
La sortie GDB :
 
Program received signal SIGSEGV, Segmentation fault.
0x0804a7c3 in explode (split=32 ' ', input=0x804e018 "LOGIN para test",
    tP=0x804adb6) at kernel.c:43
43              tP[0] = input;
 
 
Ce que je ne comprend pas c'est que hier ca ne segfaultait pas :/
 
Merci !

Reply

Marsh Posté le 03-04-2006 à 18:27:05   

Reply

Marsh Posté le 03-04-2006 à 18:35:22    

As-tu initialisé tp ?  Tu fais tp[0) = input, mais si tu n'as pas alloué de la mémoire à tp pour ranger tp[0], tu te ballades dans la nature,
Hier ça fonctionnait, ben oui, ce sont les joies du C !

Reply

Marsh Posté le 03-04-2006 à 18:38:27    

C'est vrai que j'aurait peut être du malloc mon tP :)
 
Ai-je moyen de lui donner une taille infini ?
 
Merci

Reply

Marsh Posté le 03-04-2006 à 18:48:36    

Non, mais tu peux choisir une taille "assez grande", la mémoriser, et en cas de besoin la doubler avec un realloc.

Reply

Marsh Posté le 03-04-2006 à 18:51:12    

Oué, bien ce que je pensait.
 
Merci.
 

Reply

Marsh Posté le 03-04-2006 à 19:59:55    

tp n'est pas initialisé

Reply

Marsh Posté le 03-04-2006 à 22:37:55    

Taz a écrit :

tp n'est pas initialisé

T'as pas l'impression d'être comme les carabiniers, d'arriver après la bataille ?   :)  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed