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 :

Fonction renvoyant **float: "erreur de segmentation" mais pas tout le temps


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Fonction renvoyant **float: "erreur de segmentation" mais pas tout le temps
    Bonjour à tous!

    J'ai un problème sur une fonction (newArray) qui demande à l'utilisateur les valeurs d'un tableau à double entrée. Il prend en entrée un tableau de float prérempli de 0 et retourne ce même tableau avec les valeurs modifiées par l'utilisateur.

    Voici le main (que la partie qui est intéressante):
    (a et b sont des int qui sont rentrées préalablement par l'utilisateur)
    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
    if(emptymat1){
    	mat1=(float **)malloc(a*sizeof(float*));
    	for(i=0;i<a;i++){
    		mat1[i]= (float *)malloc(b*sizeof(float));
    	}
    }
    else{
    	mat1=(float **)realloc(mat1,a*sizeof(float*));
    	for(i=0;i<a;i++){
    		mat1[i]= (float *)realloc(mat1,b*sizeof(float));
    	}
    }
    for(i=0;i<a;i++){
    	for(k=0;k<b;k++){
    		mat1[i][k]=0;
    	}
    }
    mat1=newArray(mat1,a,b);
    et ma fonction newArray:
    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
    float **newArray(float** T,int r,int c){
    	char isNotNull, test='y';
    	float val;
    	int i,j;
     
    	printf("All the elements of the matrix were intialized to 0. ");
    	do{
    		printf("Are there elements in the matrix which are not null? (y/n) ");
    		scanf("%c",&isNotNull);
    		purge();
    	}while(isNotNull!='y' && isNotNull!='n');
    	if(isNotNull=='y'){
    		printf("Please tell which elements of the matrix are not null :\n\n");
    		while(test=='y'){
    			do{
    				printf("Enter the row: ");
    				scanf("%d",&i);
    				purge();
    			}while(i<1 || i>r);
    			do{
    				printf("Enter the column: ");
    				scanf("%d",&j);
    				purge();
    			}while(j<1 || j>c);
     
    			printf("Enter the value of the element (%d,%d) : ",i,j);
    			scanf("%f",&val);
    			purge();
     
    			T[i-1][j-1]= val;
     
    			do{
    				printf("Is there an other non-null element inside the matrix? (y/n)");
    				scanf("%c",&test);
    				purge();
    			}while(test!='y' && test!='n');
    		}
    	}
     
    	return T;
    }
    Voici les problèmes que je rencontre:
    J'ai fait quelques tests avec des matrices, et je ne sais pas pourquoi, des fois ça passe, des fois ça passe pas.
    Imaginons a=b=3.
    Si je mets l'élément (2,1) (donc [1][0] du tableau) à une certaine valeur, et l'élément (2,2) à une autre valeur, tout va bien.
    Mais si par exemple je mets une valeur à l'élément (3,1) (donc [2][0]), il me l'accepte, me demande si d'autres valeurs sont nulles, je réponds "n", et la paf: "erreur de segmentation". L'erreur arriverait donc au niveau du "return T", la dernière ligne de la fonction.
    Je sais que le problème est dans ces lignes car juste après l'appel à la fonction dans le main, j'ai un printf dont le contenu ne s'affiche pas.

    Est-ce que vous voyez une erreur quelque part svp? Merci

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Ca doit être un dépassement de mémoire.

    Par contre, dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	for(i=0;i<a;i++){
    		mat1[i]= (float *)realloc(mat1,b*sizeof(float));
    	}
    le premier argument devrait être mat1[i].

    Ensuite, il faut tester le retourn de malloc/realloc...

    Enfin, realloc peut retourner NULL, du coup, il faudrait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void *tmp = realloc (bla);
     
    assert (tmp);
     
    if (tmp != NULL)
       mat1[i] =  tmp;
    Jc

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse!

    Quand tu dis que ça peut être dû à un dépassement de mémoire, où est-ce que l'erreur pourrait être?
    Parce que mon erreur de segmentation arrive lorsque emptymat1=true, donc il fait un malloc et non un réalloc.

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 327
    Points
    2 327
    Par défaut
    On ne le repetera jamais assez, toujours verifier les retour de fonction, surtout celle touchant a l'allocation memoire.

    Il faut faire ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    char *test = NULL;
    int nombreLettre = 20;
     
    test = malloc (nombreLettre * sizeof(char));
    if (test == NULL)
    {
        perror("Regarde commet cette fonction marche, il y a plein d'exemple ");
        /* A toi de determiné l'action a faire en cas d'erreur */
    }
    else
    {
        /* La, tu continue ton programme tranquillement */
    }
    Ainsi, si ton malloc est la cause de tes soucis, tu aura un beau message d'erreur dans stderr t'expliquant pourquoi.


    Sinon, je penche moi aussi pour un depassement memoire. En meme temps, segfault sur un tableau allouer dynamiquement, y'a de grande chance que ce soit la.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Ok merci, je n'ai pas le code sous la main, je testerai.

    Mais étant donné que ça marche pour certaines valeurs, ça veut dire que l'allocation de mat1 a bien fonctionné ou en tout cas que mat1!=NULL, non?


    EDIT:
    J'ai ajouté le test du malloc, il ne me met aucune erreur. Mieux, juste avant le return de ma fonction newArray, je fais un print du tableau, et toutes les valeurs ont bien été entrées correctement! Je ne comprends vraiment pas ce qui se passe...

  6. #6
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Ce qui me chagrine dans ton code, c'est la réallocation.
    Outre l'erreur déjà signalée (le premier argument du realloc devrait être mat1[i]) et la remarque que les échecs d'allocations ne sont pas gèrés, la réallocation ne marche pas.

    Appelons an la nouvelle valeur de a et ap la précédente et supposons pour simplifier qu'il n'y a pas d'échec d'allocation :

    1- an < ap Alors après réallocation de mat1, tous les pointeurs de mat1[an-1] à mat1[ap-1] sont perdus. Ceci entraine une fuite mémoire pour les allocations précédentes dont l'adresse est dans ces pointeurs. On doit au préalable libérer la mémoire adressée par ces pointeurs.

    2- an > ap Alors les nouveaux pointeurs de mat1[ap-1] à mat1[an-1] sont créés mais non initialisés et il n'est pas possible de faire un realloc dessus. Il faudrait auparavant les mettre explicitement à NULL.

    A remarquer que cela implique de connaitre l'ancienne première dimension (ap) du tableau.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Oulala ça devient compliqué cette histoire

    Je ne savais pas que la fonction realloc marchait de cette façon, je pensais qu'on l'utilisait justement parce qu'elle "faisait le ménage" de ce qu'il y avait avant, puis qu'elle réallouait la mémoire.

    Finalement, je ne vois pas comment m'en sortir...

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    lol

    il suffit de te faire une fonction FreeArray
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    En fait ce que j'ai du mal à comprendre, c'est que vous me parlez du problème du realloc alors que le code n'atteint pas cette partie puisqu'il plante avant. L'erreur de segmentation peut vraiment venir de là?

  10. #10
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je pense qu'on est obligé de voir un code minimal/compilable qui expose ton problème avant de pouvoir vraiment t'aider correctement.

    Jc

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci de passer du temps sur mon problème

    Voilà le programme en entier (assez long).
    Pour le principe, le makefile prend 3 valeurs : "clean" pour effacer les fichiers .o et les temporaires, "createlib" qui me crée la bibliothèque matrix.h et "Matrix.exe" qui compile le programme MainMatrix.c
    Désolé de vous donner ça comme ça, mais je ne vois pas tellement de quoi vous avez besoin.
    Pour tester où il y a le problème, vous pouvez choisir par exemple "Sum", ce qui va permettre de créer les matrices nécessaires et donc d'afficher ce fameux "erreur de segmentation".

    edit: voir le programme mis à jour en bas

  12. #12
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Ton code est infernal à cause de la duplication de code. Le copier-coller, c'est facile à faire mais pour la mise au point d'un programme, c'est dangereux, on ne sait jamais si l'ensemble du code est correct. Quand on corrige une erreur quelque part, il y a toujours ailleurs un segment de code copier/coller qu'on oublie de mettre à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    case 2:
    ....
         //--------------------------------------
       printf("For the second matrix B :\n");
         //Creation of the second matrix
    ....
       for(i=0;i<a;i++){
         for(k=0;k<b;k++){
           mat1[i][k]=0;
       }
     }
     mat2=newArray(mat2,a,b);
    ....
    Le code plantera ici, dans newMatrix, parce que col peut devenir NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       while(col->colN != (j+1)){
          col=col->nextCol;
       }
    Un exemple :
    Si on est entré dans ce code, par exemple pour i==0 et j==1, col sera tel ensuite que col->colN vaut 2 (ou plus). Si on entre à nouveau dans ce code pour i==1 et j==0, on ne satisfera jamais col->colN == 1 : col->colN vaut 2, puis 3, puis ... jusqu'à ce que col == NULL et on plante.

    Ton erreur précédente a eu "l'avantage" de mettre cette erreur en évidence en laissant des éléments non nuls dans mat2. Mais tu aurais intérêt à revoir de très près et à tester intensivement cette fonction qui est une pierre de base de ton programme. Il est inutile d'écrire quoi que ce soit tant qu'on n'est pas certain de son fonctionnement correct.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Je me suis rendu compte un peu tard en effet que le copier-coller est loin d'être la meilleure solution...mais c'est la première fois que je gère un programme aussi long, et je m'y suis très mal pris.

    Pour ta remarque sur le while, je ne comprends pas tellement. D'après moi on est certain que col->colN atteindra la bonne valeur puisque précédemment on a créé la liste liée col avec colN partant de 1 jusqu'à la dimension de la matrice.

    (J'ai oublié de vous donner aussi l'énoncé du projet, ça peut être utile, le voici)

    Et autrement, pour cette fonction newArray, il n'y a rien qui cloche? Parce qu'avec cette erreur de segmentation, je ne peux rien tester de mon programme.

  14. #14
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    D'après moi on est certain que col->colN atteindra la bonne valeur puisque précédemment on a créé la liste liée col avec colN partant de 1 jusqu'à la dimension de la matrice.
    La première fois oui, on atteindra la bonne valeur, mais cela modifie col et si la deuxième fois on veut atteindre une valeur inférieure à celle atteinte par col->colN on ne peut pas. (col n'a pas été réinitialisé entre temps)

    Et autrement, pour cette fonction newArray, il n'y a rien qui cloche? Parce qu'avec cette erreur de segmentation, je ne peux rien tester de mon programme.
    Pour moi, le premier plantage avec l'option Sum s'est produit dans newMatrix (ce qui ne veut pas dire que newArray soit correcte, je ne l'ai pas regardée)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    J'ai corrigé ce que tu m'as dit en réinitialisant col et row, l'erreur de segmentation a disparu (merci!), mais il y a encore un problème un peu plus loin lors de l'appel à la fonction printMatrix, il m'affiche "A is:" puis plus rien (testé avec matrice 3x3 en remplissant les valeurs 2,1 et 3,1), mais en essayant de remplir à d'autres emplacements, tout se passe correctement, sauf que le A et le B qu'il m'affiche sont faux, et donc le résultat est faux aussi...

    Il y a donc encore des erreurs ailleurs (étonnant )

    EDIT: j'ai modifié pas mal le programme, je mets à jour le zip
    Fichiers attachés Fichiers attachés

  16. #16
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    1) Ce code ne compile pas chez moi. J'ai corrigé les quelques problèmes que j'avais.

    matrix.c: In function ‘selectValue’:
    matrix.c:274: warning: the address of ‘isMatrixEmpty’ will always evaluate as ‘true’
    matrix.c: In function ‘lmatrix’:
    matrix.c:1736: warning: unused variable ‘k’
    le premier est mauvais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifndef _MATRIX_H_
        #include "matrix.h"
    #endif //_MATRIX_H_
    Ne sert à rien, enlève moi ce ifndef...

  17. #17
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Il va falloir beaucoup de nettoyage de ce code.

    J'ai une jolie erreur de segmentation si je commence à demander une multiplication.

    En gros, tu as trop de code qui n'est visiblement pas testé.

    Ton main est trop gros : 923 lignes avec souvent la même chose dans tes cases.

    On factorise le code en fonction pour aider au maintien du code. Change ce code pour n'avoir qu'un appel de fonction dans chaque cas. Et tu verras que beaucoup de code est le même.

    - Il manque des tests des malloc dans matrix.c

    - Factorise mulStrassen.

    Jc

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Me revoilà.

    J'ai fait beaucoup de ménage dans le fichier matrix.c, 1200 lignes de moins!
    Pour le mainMatrix, j'en ai recréé un tout petit qui me permet de tester rapidement si toutes les fonctions marchent.

    Et bien, toujours la même chose: erreur de segmentation au niveau de newMatrix, pourtant je l'ai vérifiée, revérifiée et je vais encore le faire, mais j'aimerais bien quand même avoir vos yeux d'experts pour m'aider un peu

    Revoici donc le projet zippé,merci à vous!

    EDIT: en utilisant gdb, il me dit que l'erreur de segmentation se situe dans la fonction isRowEmpty, or cette fonction n'est pas appelée...je ne comprends vraiment pas là.
    Fichiers attachés Fichiers attachés

  19. #19
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Moi je vois ceci :

    Enter the value of the cell row 1 column 1: 2
    Enter the value of the cell row 1 column 2: 2
    Enter the value of the cell row 2 column 1: 2
    Enter the value of the cell row 2 column 2: 2
    Enter the value of the cell row 1 column 1: 2
    Enter the value of the cell row 1 column 2: 2
    Enter the value of the cell row 2 column 1: 2
    Enter the value of the cell row 2 column 2: 2

    0x080490fc in addCellElement (m=0x8bc2068, value=2, x=1, y=1) at matrix/matrix.c:274
    274 while(c->colN != y){ //We go through the col to find the good one
    (gdb) print c
    $1 = (colElement) 0x0
    Donc ta colonne vaut 0.

    Jc

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Ça signifie que c=NULL donc que m->cols=NULL donc que c'est au niveau de la création de cette liste cols que ça foire?

    EDIT: est-ce que tu as bien pris le dernier dossier que j'ai mis en ligne? Parce que j'ai fait un edit de mon post, il y avait effectivement une erreur au niveau de la création de la matrice (j'avais inversé nb de lignes et de nb de colonnes...)

    EDIT2: Ce que j'ai du mal à comprendre aussi, c'est que le problème ne peut venir que de newMatrix, et pourtant si je mets un printf tout au début de cette fonction, il n'est jamais affiché à l'exécution...

    EDIT3: Voilà, reglé tous les problèmes en dehors du makefile, à part une erreur de segmentation dans la fonction mulMatrixStrassen, mais je n'ai pas le temps de voir ce qui ne va pas. gdb me dit que ça arrive lors de la première récursivité. J'essaye de corriger le makefile et je vous tiens au courant si ça vous intéresse

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/05/2014, 23h24
  2. jQuery erreur "Warning:" parfois mais pas tout le temps
    Par elizabeth dans le forum jQuery
    Réponses: 6
    Dernier message: 02/01/2012, 12h30

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