Re: maximum size in c

Startseite

Nachricht beantworten
Autor: youshe
Datum:  
To: guilde
Betreff: Re: maximum size in c
Le Mon, 17 Nov 2008 21:54:16 +0000 (GMT),
Patrick Dupre <pd520@???> a écrit :

> Merci,
>
> Mais je comprends rien,
> C'est exact, le segmentation fault est du a:
> for (i = 0 ; i < nb_pt ; i++) fprintf (file_out,"%11.5f %g\n", x [i],
> y [i]) ;
> qui est a la fin du programme.
> Si je fait :
> for (i = 0 ; i < nb_pt ; i++) fprintf (file_out,"%11.5f %g\n", x
> [i]) ;
>
> Ca marche,
>
> de meme ceci marche:
>
> #define MAXDBL 4194304
> double x[MAXDBL], y [MAXDBL] ;
> int main () {
>      unsigned long int i;
>      unsigned long int nb_pt = MAXDBL ;
>      FILE *file_out ;
>      file_out = fopen ("tmp.txt", "w") ;
>      for(i = 0 ; i < MAXDBL ; i++)
>      {
>          x [i] = 1.0 ;
>      };
>      for (i = 0 ; i < nb_pt ; i++) fprintf (file_out, "%11.5f %g\n",
> x [i], y [i]) ;
>      return 0;
> };

>
> Ou est l'erreur ?


Euh, chez moi, unsigned long int est sur 4 octets, comme un unsigned
int. Il y a déjà une erreur à ce niveau là nan ? 2^(4*8) << MAXDBL
L'erreur te vient peut être simplement d'ici: unsigned long int nb_pt =
MAXDBL ; mais n'apparaît que lorsque tu utilises nb_pt non ?
Comme tu n'utilise pas nb_pt dans le second programme, il te le vire à
la compilation, donc ut n'as pas l'erreur

Fred