Salut à tous,
Je réalise actuellement un projet avec SDL, et j'ai remarqué une erreur assez troublante dans le code suivant :
En fait ici je ne peux pas free(win), sinon segfault, il me dit que j'essaye de free quelque chose qui n'existe pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 void affichage_win(SDL_Surface *ecran,int num_j){ char *win=malloc(sizeof(win)); SDL_Surface *texte_win; SDL_Color couleurTexte={0,0,0,0}; SDL_Rect pos_win; pos_win.x=LARGEUR/3; pos_win.y=HAUTEUR/3; TTF_Font *police=TTF_OpenFont("arial.ttf",40); //joueur 1 if(num_j==0) win=strcpy(win,"VICTOIRE JOUEUR 1!!"); //joueur 2 if(num_j==1) win=strcpy(win,"VICTOIRE JOUEUR 2!!"); texte_win=TTF_RenderText_Solid(police,win,couleurTexte); SDL_BlitSurface(texte_win,NULL,ecran,&pos_win); SDL_Flip(ecran); SDL_FreeSurface(texte_win); free(win); }
Si je le met pas ça marche...
Est ce que les fonctions SDL se chargent elles-même de la libération mémoire de ce char* ou est ce que - pour une raison ou pour une autre - je n'ai pas le droit de le libérer à ce moment là?
Partager