Bonjour à tous, je travaille sur un projet qui comprend une fonction qui permet de découper le centre d'une image passée en paramètre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
prototype :
float *retailler(int PetitX, int PetitY, int GrandX, int Grand Y, MIL_ID *Buffer);
Je passe en paramètre : les dimensions de l'image contenue dans buffer ainsi que les dimensions souhaitées.

Dans mon programme je suis amené à appeler souvent cette fonction (elle est dans une boucle. Pour faire simple : J'acquiert une image provenant d'une caméra, je découpe son centre, puis j'affiche le centre et je recommence).

Or, au bout de 3 fois, J'obtiens une erreur "Violation d'accès (0xc0000005) à l'adresse ....." de la part de Dr Watson (le pc sur lequel je travaille est un PII300 avec NT4)....

J'ai donc décortiqué le code de ma petite fonction, et je me suis aperçu que la ligne qui provoquait ce message etait en fait un malloc :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
pixel = (unsigned char*)malloc(GrandX*GrandY*sizeof(unsigned char));
Je tiens à préciser que je le libère à la fin de ma fonction. En fait, ça marche... 2 fois seulement.

Si vous avez une idée de la cause de cette erreur, je suis preneur !

Merci beaucoup !


PS : J'ai en fait un paquet de problèmes très bizarres. Le PC a l'air hanté
A vrai dire, juste après le malloc, j'ai la ligne de code suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
pixel = (unsigned char*)Buffer;
L'adresse que le malloc a renvoyé ne me sert donc à rien ! vous trouvez ça stupide ? ouais... moi aussi, mais si je mets pas le malloc, le programme ne fonctionne plus... (pas d'erreur, mais il ne m'affiche pas mon image).

Je pense que les bibliothèques fournies avec la carte sur laquelle est branchée la caméra sont un peu ... pas bien...