Je construis un programme en C++, en utilisant SDL et reçois des temps en temps cette erreur:erreur multithread SDL en C++
* glibc détecté * ./assistant: à double libre ou la corruption (! Prev)
Il est difficile de répliquer, donc je ne peux pas trouver exactement ce qui le cause, mais j'ai juste ajouté un deuxième thread au programme, et aucun thread exécuté seul ne semble causer l'erreur.
Les threads ne partagent aucune variable, bien qu'ils exécutent tous les deux les fonctions SDL_BlitSurface et SDL_Flip. Est-ce que courir en même temps jette une telle erreur, ou est-ce que j'aboie le mauvais arbre?
Si c'est la cause, devrais-je simplement jeter un mutex autour de tous les appels SDL?
Merci
Les deux fonctions prennent un paramètre 'SDL_Surface *'. Passez-vous la même surface à chaque fonction? –
En fait, vous avez raison, je le fais. Toutes les mêmes surfaces, en fait: les deux threads appellent une fonction de tirage général. Cela causerait-il l'erreur que j'ai mentionnée? Je ne suis pas familier avec cela, bien que lors de la recherche d'une réponse, il a semblé être suggéré que l'erreur a été lancée quand on a essayé d'allouer la mémoire qui était déjà non allouée. – wyatt