the constructor "lire_un_ase" works separatly of this program. and this program was programmed in procedural (C)before. It doen't work since i have translate its in object (C++).
So i think that the error come from the glFrustum but i don't know how to find the correct values.
Can you help me and tell me if it is well from the glFrustum that the error comes from.

Code :
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <GL/glut.h>
 
#define nb_vertices 20000
#define nb_faces 20000
 
	class lire_un_ase
	{
	public :
		struct donnees
		{
			float tab_vertices [nb_vertices][3] ;
			int tab_sommets [nb_faces][3] ;
		};
		donnees tab_struct[50] ;
		int nb_indices[100] ;
		int i ;
		int j ;
		int m ;
		int b ;
		int a ;
		char tmp [100] ;
 		char tmp2 [100] ;
		char tmp3 [100] ;
 		int temp ;
 		char passe_ligne [200] ;
 
	    lire_un_ase () ;
 
	};
 
	lire_un_ase *lecteur ;
 
    lire_un_ase::lire_un_ase ()
    {
 
 	char nom_fichier[] = "voiture" ;
 
 
 	FILE *pointeur ;    //pointeur sur le fichier 
 
 	if ((pointeur = fopen(nom_fichier, "r")) == NULL)
         	return ;
 
	do  //compte le nombre d'objets
 	{
 		fscanf(pointeur, "%s", tmp) ;
		if(strcmp ("*MESH", tmp) == 0)
		{
			a++ ;
		}
 	}
 	while (!feof(pointeur)) ;
 
	fseek (pointeur, 0,SEEK_SET) ;
    //cout<< a ;
 
 	for (b=0; b<a ;b++)
	{
 
		do
 		{
 
 			fscanf(pointeur, "%s", tmp) ;
 		}
 		while (strcmp ("*MESH_VERTEX", tmp) != 0) ; //passe toutes les chaines en revue jusqu'a qu'a ce que tmp soit égal à chaine ("*MESH_VERTEX")
 
 
 		do//rempli le tableau de structure avec des coordonnées de vertices
 		{
 
 			fscanf (pointeur, "%d%f%f%f%s", &amp;(temp) ,&amp;(tab_struct[B].tab_vertices[i][0]), 
				&amp;(tab_struct[B].tab_vertices[i][1]),&amp;(tab_struct[B].tab_vertices[i][2]), tmp) ;
 
 			//cout << tab_struct[B].tab_vertices[i][0]<<" "<<tab_struct[B].tab_vertices[i][1]<<" "<< tab_struct[B].tab_vertices[i][2]<<endl ;
			i++ ;
 
 		}
        while (strcmp (tmp, "}")!=0) ;
 
		i=0 ;
 
 		do
 		{
 
			fscanf(pointeur, "%s", tmp2) ;
 		}
 		while (strcmp ("A:", tmp2) != 0) ;
 
		do //rempli le tableau de la structure avec le numero des sommets
		{
 
 
			fscanf (pointeur, "%d%s%d%s%d", &amp;(tab_struct[B].tab_sommets[j][0]),tmp,
					&amp;(tab_struct[B].tab_sommets[j][1]),tmp, &amp;(tab_struct[B].tab_sommets[j][2])) ;
			//cout << tab_struct[B].tab_sommets[j][0]<<" "<<tab_struct[B].tab_sommets[j][1]<<" "<<tab_struct[B].tab_sommets[j][2]<< endl ;
 
			fgets (passe_ligne, 200, pointeur) ; //saute une ligne dans le fichier où les données ne servent pas
			fscanf (pointeur, "%s%s%s", tmp3, tmp, tmp);
			j++ ;
 
		}
		while (strcmp(tmp3, "}")!=0) ;
 
		nb_indices[B] = j*3;//calcul le nombre d'indices
		//cout << nb_indices[B]<<endl ;
		j=0;
 
    }
    //cout<< "hello1"<<endl ;
     fclose (pointeur) ;
    }
void reshape (int w, int h)
{
	glViewport (0, 0, w, h) ;
	glMatrixMode (GL_PROJECTION) ;
	glLoadIdentity () ;
	glFrustum(-5.0 , 5.0, -5.0, 5.0, 5.0, 500.0); //perspective conique
	glMatrixMode(GL_MODELVIEW); //la matrice active de modelisation/visualisation sera affectée
	glLoadIdentity(); //charge la matrice identité
 
	gluLookAt (0.0, 0.0, -50.0, 0.0,0.0,0.0, 0.0, 1.0, 0.0) ; //caméra placée sur l'axe des Z et regardant vers l'origine
	//pour "voiture" gluLookAt (0.0, 0.0, -50.0, 0.0,0.0,0.0, 0.0, 1.0, 0.0) ;
	//pour "geosphere" gluLookAt (20.0, 0.0, 0.0, 0.0,0.0,0.0, 0.0, 1.0, 0.0) ;
}
void display ()
{
 
 
	glEnableClientState (GL_VERTEX_ARRAY);
 
	glPolygonMode (GL_FRONT_AND_BACK, GL_LINE) ;
 
	glClear (GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT ) ;
 
	//glScalef (3.0, 3.0, 3.0) ;
	for (lecteur->m=0 ; lecteur->m<=lecteur->a ; lecteur->m++)
	{	
		glVertexPointer (3, GL_FLOAT, 0, &amp;(lecteur->tab_struct[lecteur->m].tab_vertices[0][0]));
		glDrawElements (GL_TRIANGLES, lecteur->nb_indices[lecteur->m],
			GL_UNSIGNED_INT,&amp;(lecteur->tab_struct[lecteur->m].tab_sommets[0][0])) ;
	}
 
	glutSwapBuffers() ; 
 
}
 
 
	void main (int argc, char** argv)
	{
		lecteur = new lire_un_ase ;
		//cout<<"hello"<<endl ;
		glutInit (&amp;argc, argv) ;
		glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) ;
		glutInitWindowSize (640, 480) ;
		glutInitWindowPosition (250,250) ;
		glutCreateWindow (argv [0]) ;
 
		glEnable( GL_DEPTH_TEST );
 
		glutReshapeFunc (reshape) ;
		glutDisplayFunc (display) ;
		glutMainLoop () ;
	}