Bonjour, j'ai un soucis avec mon realloc qui provoque visiblement une fuite mémoire avec un invalid next size.

Mais je ne vois pas du tout le soucis dans le code..

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
int main(){
	int buffsize=4;
	int init_size=4;
	int16_t * x=(int16_t*)malloc(buffsize*sizeof(int16_t));
	int16_t i;
	int bytesRead;
	char *fi="test.wav";
	FILE *fd_waveFile=NULL;
	wavfile head_waveFile;
	int cpt=0;
	wavRead(&fd_waveFile,fi,&head_waveFile);
 
	while ((bytesRead = fread(&i, sizeof(int16_t),1, fd_waveFile)) > 0){
		if(cpt==(buffsize-1)){
			x=(int16_t*)realloc(x,init_size*sizeof(int16_t));
			buffsize=buffsize+init_size;
		}
		x[cpt]=i,
 		cpt++;
	}
return(0);
}
L'erreur:

*** glibc detected *** ./test:realloc: invalid next size : une adresse mémoire

suivi d'une bonne vingtaine de ligne de bactrace.