Bonjour, j'ai une erreur de segmentation dans mon programme. Ell vient de la fonction suivante:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
float * RaisedCosineSQRT(float nb_periodes,float nb_points,float roll_off)
{
 
/*------déclaration et initialisation des variables------*/
 int i,n;
 float t;
 float N=nb_periodes;
 float D=nb_points;
 float e=roll_off;
 float *w=NULL;
 float racineD,x,oneplus,oneminus,den; 
 
 w=(float *)malloc(sizeof(float) * (N*D)); /*Allocation en mémoire*/
 
 racineD = sqrt(D);
 
 for(i=0;i<N*D;i++)	  
  { w[i]=0;              /*vecteur de 0*/
  }
 
 for(n=0;N*D;n++)
{ t=n-N*D/2-1;
   if(t==0)
    {
     w[n]=(4*e/3.1416+1-e)/ racineD;
    }
   x=t/D; 
   if(e==0)
    {
     w[n]=racineD*sin(3.1416*x)/(3.1416*t);
    }
   oneplus=(1.0+e)*3.1416/D;
   oneminus=(1.0-e)*3.1416/D;
 
   den=t*t*16*e*e-D*D;
   if(den==0)
   { 
    w[n]=(D*racineD/(8*e*3.1416*t))*(oneplus*sin(oneplus*t)-(oneminus*D/(4*e*t))*cos(oneminus*t)+(D/(4*e*t*t))*sin(oneminus*t));
   }
   w[n]=(4*e/(3.1416*racineD))*(cos(oneplus*t)+sin(oneminus*t)/(x*4*e))/(1.0-16*e*e*x*x);
 
 }
 
  for(i=0;i<N*D;i++)	  
  { printf("\nw[i]=%f",w[i]);              /*vecteur de 0*/
  }
 
  return(w);
}

Si quelqu'un pouvait m'aider. Merci.