ERREUR SEGMENTATION CORE DUMPED - C++ - Programmation
Marsh Posté le 22-11-2015 à 00:29:12
Je subodore que l'une des machines est en 32 bits et l'autre en 64, non?
J'ai survolé brièvement le code, mais à vue de nez ce devrait être ceci la ligne fautive, je pense:
etat.interactions = (float**)malloc(nb_sp*sizeof(float));
a remplacer par
etat.interactions = (float**)malloc(nb_sp*sizeof(float*));
En général (mais la norme ne l'impose pas je pense) sizeof(float) = 4 (32 bits) pour rester compatible avec la norme IEEE-754
Par contre, en 32 bits, sizeof(float*) = 4 (32 bits) (comme tout pointeur)
Mais en 64 bits, sizeof(float*) = 8 (64 bits) (comme tout pointeur)
Et donc si par chance l'allocation marchait bien en 32 bits, elle ne va pas marcher en 64 bits, et a la moitié des allocations, a cette ligne la:
*temp = (float*)malloc(nb_sp*sizeof(float));
on devrait déborder de la zone allouée à l'allocation de etat.interactions
Bon, ma machine en 64 bits est pas dispo pour l'instant pour tester cela.
Sinon, une petite remarque: il serait plus efficace de modifier creer_etat afin que sa signature soit void creer_etat(EI *etat) et passer la structure par adresse à l'appel, parce que la vous passer la structure par copie à l'appel et au retour.
A+,
Marsh Posté le 22-11-2015 à 09:00:55
Bonjour Gilou,
Merci beaucoup pour ton aide. C'était bien le problème. Ma machine est en effet en 64 bits. Le rajout du pointeur dans la ligne indiquée a résolu le problème.
Pour une première demande d'aide sur un forum, je suis vraiment ravie.
Merci beaucoup aussi pur ton aide sur la remarque faite, la version affichée ici était un test pour savoir si notre fonction creer-etat s'executait. Nous avons bien l'intention de passer la fonction creer_etat en procédure et faire appel au fichier de données en argument lors de l’exécution du programme.
Encore merci beaucoup.
Bonne continuation.
Axelle
Marsh Posté le 21-11-2015 à 13:37:37
Bonjour,
Je souhaiterais comprendre un programme qui s’exécute très bien sur un premier ordinateur mais ne peut pas s''exécuter sur un autre ordinateur de même environnement.
En effet, après avoir compiler et exécuter un programme, j'ai copié ce dernier via une clé sur mon ordinateur. Je l'ai compilé, tout se passe bien mais lorsque je veux l’exécuter, Le message d'erreur est "ERREUR SEGMENTATION (core dumped).
J'ai essayé d’autres programme qui fonctionnaient déjà sur mon ordinateur et tout va bien.
Quelqu'un aurait une idée ?
Je vous joins mon programme qui se lit via un fichier de structure et un fichier de fonction et qui est incrémenté par un fichier texte de données.
Fichier "liste_structures.h"
Fichier Fonctions "creer_etat.c"
Fichier "creer_etat.h"
Fichier Foncions "affiche_tableau.c"
Fichier "affiche_tableau.h"
Mon programme Principal "test2.c
Pour finir mon fichier de données "Fichier_test2.txt"
MErci d'avance pour votre aide.
Axelle