processeur NTVDM : instruction non autorisée (TURBO C)

Statut
N'est pas ouverte pour d'autres réponses.
Bonjour
j'ai un problème en programment en C (sous Turbo C)
j'ai tapé un petit programme de C graphics et je l'ai modifié au fur et a mesur et mnt lorseque je le lance le PC me dit:

D:\PROGRA~1\TC\TC.exe
Le processeur NTVDM a rencontré une instruction non autorisée.
CS:0fad IP:fffd OP:32 00 00 00 00 Choisissez 'Fermer' pour mettre fin à l'application.

mais mes autres programmes en C graphics fonctionne niquel !!
j'ai éssayé sur 2 PC, le mien (un AMD64 3500+) et sur un P4 3.2Ghz ... pas de changement ..

p-e que ca vient de mon code source ? que j'ai tapé qqchoze de non valide ?

Code:
#include <graphics.h>
#define tempo 1000

void module_graphique(void);
void module_exercice(void);

int X,Y,C;
int i, j;
int k, l;
int clav;

main()
{
 int HGx_rect,HGy_rect,BDx_rect,BDy_rect,taille;
 int HGx_rond,HGy_rond,BDx_rond,BDy_rond;

 void *image_rect;
 void *image_rond;
 int clav;

 HGx_rect=82;     HGy_rect=12;     BDx_rect=40;     BDy_rect=40;
 HGx_rond=500;    HGy_rond=12;     BDx_rond=540;    BDy_rond=52;

 module_graphique();
 module_exercice();

 /***** RECTANGLE *****/

 taille=imagesize(HGx_rect,HGy_rect,BDx_rect,BDy_rect);
 image_rect=malloc(taille);

 getimage(HGx_rect,HGy_rect,BDx_rect,BDy_rect,image_rect);
 putimage(HGx_rect,HGy_rect,image_rect,1);

  /***** ROND *****/
  taille=imagesize(HGx_rond,HGy_rond,BDx_rond,BDy_rond);
  image_rect=malloc(taille);

  getimage(HGx_rond,HGy_rond,BDx_rond,BDy_rond,image_rond);
  putimage(HGx_rond,HGy_rond,image_rond,1);


 do
 {
  clav=getch();
  switch(clav)
   {
   case 100 : i++;
    break;

   case 113: i--;
    break;

   case 122 : j--;
    break;

   case 115 : j++;
    break;


   case 77 : k++;
    break;

   case 75: k--;
    break;

   case 72 : l--;
    break;

   case 80 : l++;
    break;
 }

  putimage(i,320+j,image_rect,1);
  delay(tempo);
  putimage(i,320+j,image_rect,1);

  putimage(450+k,320+l,image_rond,1);
  delay(tempo);
  putimage(450+k,320+l,image_rond,1);

    }while(clav!=27);

 free(image_rect);
 free(image_rond);
 closegraph();


}

void module_exercice(void)
 {
  rectangle(82,12,40,40);
  circle(520,32,20);
  }

void module_graphique(void)
{
   int gestionnaire = DETECT,mode,test,erreur_graphique;

   initgraph(&gestionnaire,&mode,"");
   if ((erreur_graphique = graphresult()) != grOk)

   {
      printf("ERREUR GRAPHIQUE : %s\n",grapherrormsg(erreur_graphique));
      getch();exit(1);
   }

   X=getmaxx();
   Y=getmaxy();
   C=getmaxcolor();
}
Le programme comporte surement des fautes mais j'ai besoin de l'executer pour les corriger ...

Pleazz help !! j'ai besoin de travaillé sur ce programme ajd !!

mercii
 
1er
OP
the_quent1

the_quent1

Elite
enfaite lorseque je supprime les lignes
Code:
free(image_rect); 
free(image_rond);
le programmes passe !! mais le free est important pour libérer la mémoire non ??
 
personnellement, je trouve pas l'endroit (j'ai cherché vite) ou tu demandes de la mémoire (malloc)
 
1er
OP
the_quent1

the_quent1

Elite
zywakx [Dania a dit:
]personnellement, je trouve pas l'endroit (j'ai cherché vite) ou tu demandes de la mémoire (malloc)
Code:
image_rect=malloc(taille);
mais c'est bon j'ai enlevé les free et de toute facon j'ai changer le code source !!

c'était les free qui bloquait ... pq ??? ca aucune idée :? (c'est mon 1er programme avec des malloc et des putimage :?)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut