bonjour,

j'ai une erreur que je n'explique pas : je charge une image 3D et ensuite j'ai besoin de stocker des valeurs dans un tableau. Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
System::Void Form1::buttonMaillage_Click(System::Object*  sender, System::EventArgs*  e)
{
	trd = new Thread(new ThreadStart(this,&Form1::Maillage3D));
	trd->IsBackground = true;
	trd->Start();
}
Voici le thread lancé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
System::Void Form1::Maillage3D()
{
	unsigned char * TabBinaire = new unsigned char[modele->largeur*modele->hauteur*modele->profondeur];
	int largeur = modele->largeur, hauteur = modele->hauteur, profondeur = modele->profondeur;
...
}
l'erreur a lieu sur la première ligne de Maillage3D, lors de la création de TabBinaire. L'erreur est la suivante :

Une exception non gérée du type 'System.Runtime.InteropServices.SEHException' s'est produite dans 3DImagerie.exe

Informations supplémentaires*: Un composant externe a levé une exception.
Visual 2005 m'ouvre le fichier onexit.c sur la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma warning(suppress: 22008) /* prefast is confused */
            onexitend = p + (onexitend - onexitbegin);
            onexitbegin = p;
            __onexitbegin = (_PVFV *)_encode_pointer(onexitbegin);
        }
 
        /*
         * Put the new entry into the table and update the end-of-table
         * pointer.
         */
         *(onexitend++) = (_PVFV)_encode_pointer(func);
        __onexitend = (_PVFV *)_encode_pointer(onexitend);
 
        return func;
}
et m'indique la ligne : __onexitend = (_PVFV *)_encode_pointer(onexitend);

Le truc bizarre est que quand j'ouvre un fichier plus petit, ca se passe correctement alors qu'en ouvrant un plus gros (comme là) ca plante !

une idée?