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 de segmentation avec un tableau de bitmaps


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 3
    Par défaut Erreur de segmentation avec un tableau de bitmaps
    Bonjour,
    J'ai récemment appris à utiliser la bibliothèque graphique allegro et j'aimerais m'y pencher un peu plus, je suis donc actuellement en train de tester plusieurs fonctionnalités de celle-ci.
    Je cherche à scinder une fenêtre en deux (à la manière des jeux vidéos, faire un écran partagé) et j'ai donc initialisé un tableau de bitmaps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALLEGRO_BITMAP *ecrans[2];
    Puis, j'ai créé ces bitmaps de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     for(int i = 0; i < 2; i++) {
    ecrans[i] = al_create_bitmap(LARGEUR/2, HAUTEUR); }
    J'ai ensuite déroulé mon code mais c'est sur cette ligne du al_create_bitmap qu'au moment de lancer mon programme, le débugueur m'affiche une erreur de segmentation... Je ne comprend finalement pas pourquoi

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    il nous manque du code.
    La dimension de chaque image est peut-être plus grande que prévue.
    Essayer avec des valeurs fixes genre 640 ,480

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 3
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    il nous manque du code.
    La dimension de chaque image est peut-être plus grande que prévue.
    Essayer avec des valeurs fixes genre 640 ,480
    Je n'avais effectivement pas donné mes macros mais LARGEUR = 1200 ; HAUTEUR = 800 ;
    J'ai essayé avec ces valeurs fixes, puis avec des valeurs nettement inférieurs mais rien ne fonctionne toujours le même problème...

    Je joins par ailleurs une image après passage du débugueur :
    Nom : pbm2.png
Affichages : 232
Taille : 144,4 Ko

    P.S : J'ai d'ailleurs tenté d'initialiser à NULL les deux cases de mon tableau comme proposé par Sve@r mais sans succès...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu devrais très probablement appeler ces fonctions al_init*() / al_install*() que l'on voit dans ton aperçu avant de faire appel à une quelconque fonction de la bibliothèque.

    Par contre ne mets surtout pas leur appel au sein de la macro assert(). Car lorsque tu compileras en release, elles disparaîtront complètement.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 3
    Par défaut
    ... ... Mais bien sûr, je viens de me rendre compte de l'erreur grossière d'inattention que j'ai fait merci de me l'avoir fait remarquer : tout marche correctement maintenant
    Merci beaucoup à ceux qui ont pu prendre le temps de répondre à ma question initiale...

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par maeldsmrdsh Voir le message
    Je ne comprends finalement pas pourquoi
    Moi non plus. Je connais pas allegro mais je viens d'aller voir la doc et al_create_bitmap() prend bien un w et un h en paramètre, et renvoie un ALLEGRO_BITMAP* donc le code ne présente pas d'incohérence. Peut-être nous donner les valeurs de LARGEUR et HAUTEUR serait un plus.

    Ce que je ferais, c'est partir de la suggestion de Mat.M mais l'enrichir en mettant à zéro le pointeur avant d'appeler la fonction voir si elle fait bien le job.

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ALLEGRO_BITMAP* ecrans[2];
     
    for (size_t i=0; i < 2; i++) {
    	ecrans[i]=NULL;
    	ecrans[i]=al_create_bitmap(480, 640);
    	printf("i=%lu, ecrans=%p\n", i, ecrans[i]);
    }

    Autre piste: voir si la bibliothèque possède un indicateur d'erreur (un truc style errno).

    PS: tu auras certainement remarqué avec cet exemple que bien indenter son code ça rend quand-même un programme plus clair et plus lisible pour tous.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de segmentation avec un tableau 2D
    Par yeahahoohoo dans le forum C++
    Réponses: 4
    Dernier message: 18/03/2009, 22h53
  2. Erreur de segmentation avec fclose
    Par sylvanus35 dans le forum Débuter
    Réponses: 7
    Dernier message: 09/08/2008, 05h33
  3. Erreur de segmentation avec libxml2
    Par DevMg dans le forum XML
    Réponses: 0
    Dernier message: 18/02/2008, 14h44
  4. Erreur de segmentation avec RSA_verify
    Par LorDjidane dans le forum C
    Réponses: 7
    Dernier message: 14/06/2007, 11h29
  5. Erreur de segmentation avec un main vide
    Par matique dans le forum Réseau
    Réponses: 10
    Dernier message: 22/04/2007, 07h07

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