Non, ce n'est pas un problème de trop d'initialisations, c'est un bon vieux segfault.
1) je n'ai jamais utilisé sdl_ttf sans avoir au préalable fais un SDL_Init() -- mais peut-être que cela fonctionne (quoique j'ai un doute, les ttf_rendertext_xxxx créant des surfaces)
2) vérifie que police ne soit pas NULL
3) il y a une erreur de malloc() ligne 46: strlen(....+1) → strlen(....)+1
4) quelle horreur ce main() kilométrique: fais des fonctions ! Et c'est tellement plus simple pour tester
- Edité par edgarjacobs 15 février 2019 à 0:32:51
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Tu comprendras donc que tes fonctions initialiser(type *variable) ne modifieront que la variable locale, pas la valeur de la variable dans la fonction appelante.
Idem égalemenrt pour listeSurfacesMP3, listeNomsMP3 et nombreDeMP3 lors de l'appel à remplirTableauMP3 (et là tu vas te retrouver avec des ***variables pour listeSurfacesMP3 et listeNomsMP3). Mais pour cette fonction, pas le choix, il faut passer les adresses puisque les fonctions ne renvoyent qu'une seule valeur
Il faut que tu procèdes petit à petit, comme le conseille michelbillaud dans ce post. J'y ajouterais que commencer par tester le parcours du répertoire et la mémorisation des noms de fichiers serait une bonne chose (pour le vérifier, un simple affichage en console), ensuite de pouvoir les lire avec fmod, avant de commencer avec les affichages sdl, qui ne sont, après tout, qu'un (simple) emballage esthétique.
- Edité par edgarjacobs 16 février 2019 à 0:23:19
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
J'ai vu que ça ne plante pas lorsque j'ouvre la police utilisée dans la fonction remplirTableauxMP3 au lieu de la fonction initialiserTTF. Je pensais que comme police est un pointeur, il est bien transmis de fonction en fonction et est donc chargé dans initialiserTTF.
Police vaut null après appel à initialiserTTF, dans la fonction main. Il faudrait donc lui passer un pointeur sur TTF_Font*, autrement un pointeur sur un pointeur.
J'ai édité la fin de mon message pendant que tu écrivais le tien
sgu35 a écrit:
Police vaut null après appel à initialiserTTF, dans la fonction main. Il faudrait donc lui passer un pointeur sur TTF_Font*, autrement un pointeur sur un pointeur.
That's what I wrote....
- Edité par edgarjacobs 16 février 2019 à 0:31:17
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Encore une question : faut-il envoyer un pointeur sur police, sur system, sur listeSurfacesMP3 et sur listeNomsMP3 dans la fonction fermerQuitterLiberer (là où sont faits les free, où on quitte la sdl et ttf et où on ferme et on libère system)?
Non, puisque tu ne modifies pas les variables elles-memes: tu ne fais que modifier (ou tu demandes, via des fonctions, de modifier) ce qui est pointé, mais tu ne modifies pas le pointeur.
- Edité par edgarjacobs 16 février 2019 à 19:28:56
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Un pointeur est une variable, qui contient une adresse.
J'aurais dû écrire
Non, puisque tu ne modifies pas les variables elles-memespas les pointeurs eux-mêmes: tu ne fais que modifier (ou tu demandes, via des fonctions, de modifier) ce qui est pointé, mais tu ne modifies pas le pointeur.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent