Bonjour

je m'y connais pas trop dans l'allocation dynamique, mais j'en ai besoin pour allouer une grande taille de données.

j'ai une image Tiff de grande taille, je veux la charger dans une matrice dynamique ( vu qu'avec la statique les grande tailles c'est pas possible)
enfin bref je veux utiliser fread successivement afin de lire la premiere ligne (12000 premiers bytes ou 6000 Word) ensuite je la réutilise pour la deuxieme ligne et ainsi de suite.
je sais que ca se fait mais je sais pas le aire, et en plus je ne sais pas si fread prend en compte les matrices, ou elle charge uniquement dans des vecteurs?


pour le moment mon programme ressemble a ça

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//Déclaration
const T=6000;     
 
Word** ptr=new Word*[T];    //j'utilise Word car les données sont codées sur 16bits
for(int i=0;i<T;i++)        //allocation dynamique de ptr le pointeur que je vais utiliser dans fread
    ptr[T] = new Word[T];
 
Word ** Matrice=new Word*[T];
for(int i=0;i<T;i++)        //allocation dynamique de la matrice qui va contenir l'image
    Matrice[T] = new Word[T];
 
//Routine d'ouverture 
if(OpenDialog1->Execute())
  {
 
   FILE *fichier1 = fopen (Form2->OpenDialog1->FileName.c_str(), "rb") ;
   if (!fichier1){
        ShowMessage ("Impossible d'ouvrir le fichier\n" +Form2->OpenDialog1->FileName);
        return ;
        }
 
  fread (ptr,T, T, fichier1); // là  je me demande si  il va me charger 6000 ligne et 6000 colonne dans la matrice ptr 
 
 
  for (int j=0; j<T; j++)
  for (int i=0; i<T; i++)
      {
 
       Matrice[i][j]= ptr[i][j];
       if  (Matrice[i][j] > 255) Matrice[i][j]=255; //Seuillage à la valeur maximale
       if  (Matrice[i][j] < 0) Matrice[i][j]=0;     //Seuillage à la valeur minimale
 
       Form2->Image1->Canvas->Pixels[i][j]=         //Affichage de l'image 
       TColor (RGB(Matrice[i][j],Matrice[i][j],Matrice[i][j]));
      }
   }
mais à l'exécution sur la ligne Matrice[i][j]= ptr[i][j]; il me fait une erreur : "le projet a provoqué une classe d'exception avec le message débordement de pile"

alors correction please et merci d'avance pour votre aide