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

SDL Discussion :

Erreur SDL - C++


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut Erreur SDL - C++
    Bonjour,

    Voici un problème que je viens de rencontrer et qui me laisse très perplexe.

    J'ai une appli, type lecteur audio, assez conséquente, en majorité en C et avec quelques fichiers C++ (qui interfacent des bibliothèques C++).
    J'uilise aussi la SDL pour la gestion de la carte son.

    Voilà le problème : Quand je ne lance pas l'audio, les autres fonctions fonctionnent très bien, seulement, quand je lance l'audio (et qu'un thread sdl s'occupe tranquillement de fournir des échantillons sonores à la carte son), si jamais je lance d'autres calculs, j'ai un joli plantage...

    Bon rien de bien alarmant me direz-vous. Seulement voici sur quoi ça plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int n = 1;
    printf ("printf : %d\n", n);
    cout << "cout : " << n << endl;
    Je suis, bien sûr, à cet endroit dans une section C++, et je ne devrais pas utiliser printf, mais c'est bien l'exemple... Voici le retour console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf : 1
    cout :
    Il est à noter, que c'est sur le cout que ça plante.

    Sinon, je travaille sous Windows XP Pro avec Micorsoft Visual C++ 2005 Expresss Edition.

    Auriez-vous une idée de l'erreur ???

    Merci de votre aide.

  2. #2
    Expert confirmé

    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 : 45
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Fabllot
    Bon rien de bien alarmant me direz-vous. Seulement voici sur quoi ça plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int n = 1;
    printf ("printf : %d\n", n);
    cout << "cout : " << n << endl;
    Je suis, bien sûr, à cet endroit dans une section C++, et je ne devrais pas utiliser printf, mais c'est bien l'exemple... Voici le retour console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf : 1
    cout :
    Cela ne prouve rien. Utilise un debuggeur pour prouver que c'est là le problème et cela te permettra peut-être de voir quelle fonction interne a un problème.

    Tu dois avoir un problème de corruption de mémoire.

    Sinon éteint progressivement ton code Son pour voir si cela peut interagir :

    - Ne pas envoyer le son à la carte mais faire tout le travail autour
    - Utilise cerr plutôt, il n'y a pas de tampon avec cerr.

    Jc

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Cela ne prouve rien. Utilise un debuggeur pour prouver que c'est là le problème et cela te permettra peut-être de voir quelle fonction interne a un problème.
    Si je disais cela, c'est justement que je le trouvais avec un debuggeur.
    Les fonctions en questions ont été largement testées hors du code et fonctionnent parfaitement.

    Pour cette erreur en elle-même je ne saisis toujours pas, mais j'ai réglé - a priori - le problème autrement. En fait, j'initialisais SDL avec SDL_INIT_TIMER, SDL_INIT_VIDEO et SDL_INIT_AUDIO, alors que je n'utilisais que l'audio. Du coup, en initialisant qu'avec SDL_INIT_AUDIO, je n'ai plus de plantage... C'est sans doute SDL_INIT_TIMER qui provoquait un disfonctionnement... espérons de ne pas en avoir besoin par la suite !

    Merci comme même.

  4. #4
    Expert confirmé

    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 : 45
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Fabllot
    Si je disais cela, c'est justement que je le trouvais avec un debuggeur.
    Les fonctions en questions ont été largement testées hors du code et fonctionnent parfaitement.
    Ah ok

    Pour cette erreur en elle-même je ne saisis toujours pas, mais j'ai réglé - a priori - le problème autrement. En fait, j'initialisais SDL avec SDL_INIT_TIMER, SDL_INIT_VIDEO et SDL_INIT_AUDIO, alors que je n'utilisais que l'audio. Du coup, en initialisant qu'avec SDL_INIT_AUDIO, je n'ai plus de plantage... C'est sans doute SDL_INIT_TIMER qui provoquait un disfonctionnement... espérons de ne pas en avoir besoin par la suite !

    Merci comme même.
    Cela m'étonnerait fortement, je pencherais encore pour le débordement mémoire du reste de ton code. Bien que possible, SDL_INIT_TIMER ne devrait pas provoquer un tel problème.

    Le plus simple est de simplifier ton code et trouver la source de l'erreur sinon cela risque de te provoquer des comportements indéfinis plus tard.

    Jc

Discussions similaires

  1. Erreur SDL : NSQuickDrawView, QuickDraw, Quartz ?
    Par blanchonvincent dans le forum SDL
    Réponses: 1
    Dernier message: 24/11/2008, 12h03
  2. erreur SDL ttf
    Par the_matt dans le forum SDL
    Réponses: 4
    Dernier message: 20/04/2008, 14h21
  3. [FAQ] [SDL] Erreurs ?
    Par Laurent Gomila dans le forum Contribuez
    Réponses: 35
    Dernier message: 02/08/2006, 02h46
  4. [C++][SDL] Erreur de segmentation
    Par Invité4 dans le forum SDL
    Réponses: 6
    Dernier message: 13/04/2006, 09h32

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