Bug dans Insure++ ???

Bug dans Insure++ ??? - C - Programmation

Marsh Posté le 31-05-2006 à 15:44:58    

Bonjour,

 

je viens de mettre une journée pour essayer de corriger une erreur dans un programme qui, en fait, n'en était pas une...

 

Le problème vient d'un bug (?) dans le programme Insure++ (qui permet de tester en profondeur (allocation mémoire, pointeurs, free, ...) un programme).

 

J'ai pu l'isoler , et j'aimerais savoir ce que vous en pensez :

 
Code :


On est d'accord ca affiche bien -1462, mais Insure me dit :

 


[test.c:11] **READ_UNINIT_MEM(read)**
 
>>   printf("%d\n",result2[159]);
 

 


  Reading uninitialized memory: result2[159]
 

 


  In block: 0x0804b008 thru 0x0804b409 (1026 bytes)
 
                  result2, allocated at test.c, 9
 
                          calloc()  (interface)
 
                            main()  test.c, 9
 

 


  Stack trace where the error occurred:
 
                            main()  test.c, 11


 :pt1cable:  :sweat:  :heink:  :pfff:

 

Pour les amateurs de Insure++, est-ce un bug connu, ou moi qui n'ai pas vu quelque chose ...

  

Reply

Marsh Posté le 31-05-2006 à 15:44:58   

Reply

Marsh Posté le 31-05-2006 à 16:36:43    

montre nous la déclaration et l'initialisation de result2

Reply

Marsh Posté le 31-05-2006 à 17:57:18    

Taz a écrit :

montre nous la déclaration et l'initialisation de result2


 
oups j'avais pas vu que le code ne s'affiche pas  :whistle:  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void)
  4. {
  5.   short *result2=NULL;
  6.   int window_size=512;
  7.   result2=(short *)calloc(window_size+1,sizeof(short));
  8.   result2[159]=-4162;
  9.   printf("%d\n",result2[159]);
  10.   free(result2);
  11.   return 0;
  12. }

Reply

Marsh Posté le 31-05-2006 à 19:14:45    

et genre un simple

Code :
  1. short s = result2[159];


 
ca fait pareil ?

Message cité 1 fois
Message édité par skelter le 31-05-2006 à 19:14:55
Reply

Marsh Posté le 01-06-2006 à 09:53:44    

skelter a écrit :

et genre un simple

Code :
  1. short s = result2[159];


 
ca fait pareil ?


 
Et bien je croyais que non, mais après avoir réessayé pour être sûr de ne pas dire de connerie, et bien si ca fait pareil ... étrange non ?  
Aurais-je eu la malchance de tomber sur un code interne de Insure ?

Reply

Marsh Posté le 01-06-2006 à 13:54:32    

En fait j'ai testé une autre façon encore plus simple :
 
mettre -1462 dans un short genre :
 
short s=-1462;
printf("%d\n",s);
 
ca fait l'erreur donc ca doit sûrement être la valeur que met insure dans tout short non initialisé pour vérifier lors de l'utilisation de la variable si sa valeur est différente ou pas ...
je vois que ça ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed