cs_deuchman
Messages postés9Date d'inscriptiondimanche 1 juin 2003StatutMembreDernière intervention29 mai 2008
-
3 mai 2004 à 15:28
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 2009
-
5 mai 2004 à 13:00
Salut à tous !
Voilà, j'ai un problème avec un programme C sous une RedHat 7.3.
Lorsque j'utilise la fonction mallc pour allouer de la mémoire à un tableau ( se tableau se situe dans un structure ), le système me répond "Segmentation fault".
Ma RedHat tourne en vmware.
J'ne sais vraiment pas ce que c'est !! Dans mon code, au préalable, je fais exactement les mêmes choses plusieurs foit mais pas pour le meme tableau (meme structure par contre).
J'vous donne le bout de code qui merde :
if (isinline((line+2),"SETEPATH")){
found=0;
for (j=0;j<l;j++){
strcpy(tmp,xpath(ptrlig[j]));
XGFPATH.encoding[j]=(char *) malloc(strlen(tmp));
XGFPATH.Nenc=l;
strcpy(XGFPATH.encoding[j],tmp);
}
Voilà... bon ben je dit merci déjà a tous ceu qui m'auront lut, aider voir débugger.
Merci.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 3 mai 2004 à 19:14
Euh t sur ke c malloc ki plante ?
Tout d'abord, segmentation fault, ca signifie kil ya un debordement de tampon, or je vois un joli strcpy !! Remplace ton strcpy par un strncpy, et puis tu nora plus de pb de ce genre...
Utilises toujours les fonction cousine de strcpy, strcat : STRNCPY, STRNCAT...
Tu evitera tout pb de buffer overflow ou otre...
Voila si c pas ca, tu re, et j'essairai de trouver mais logikment, c ca...
cs_deuchman
Messages postés9Date d'inscriptiondimanche 1 juin 2003StatutMembreDernière intervention29 mai 2008 4 mai 2004 à 06:52
C super sympa tt ca....
le seul soucis, c que au debug, j'plante sur la ligne :
XGFPATH.encoding[j]=(char *) malloc(strlen(tmp));
et que le strcpy s'effectue correctement.
Parcontre, j'ai réduis les tailles de mes tableau dans la structure XGFPATH et la ca fonctionne, est ce qu'il n'y a pas une histoire pour allouer de la place et a la structure puis ensuite au variables de celle ci ???
cs_deuchman
Messages postés9Date d'inscriptiondimanche 1 juin 2003StatutMembreDernière intervention29 mai 2008 5 mai 2004 à 09:37
Voilà :
struct
{
...
char *encoding[8];
...
} XGFPATH;
et derrierère....plus loin :
XGFPATH.encoding[j]=(char *) malloc(strlen(tmp));
Et ca merde, uniquement sur RedHat 7.3, sous Mandrake ou Windows, ca fonctionne tres bien ! (RedHat et Mandrake en vmware)
Alors, j'ai chercher, et j'me suis appercu que si je diminuer la taille ( *encoding[2] ) ca fonctionnait (ca va plus loin dans le code et que si j'augmentai (*encoding[18] ) j'plantait sur un malloc précédent. J'ai 5 tableau du même style dans ma structure. J'ai comme l'impression qu'il n'a pas assez de mémoire pour m'allouer ce que j'ai besoin...
Merci pour tt !
-j&b-
Vous n’avez pas trouvé la réponse que vous recherchez ?