Soucis d'allocation dynamique en Borland C++

djoly Messages postés 2 Date d'inscription   Statut Membre -  
djoly Messages postés 2 Date d'inscription   Statut Membre -
Bonjour,
J'ai écrit des programmes en C/DOS que je souhaite traduire en Borland C++ builder 6.0.
Dans la mesure où je travaille en analyse spatiale (climatologie), j'ai besoin de mémoriser de
grosses matrices de données à 2 dimensions (MNT, images de télédétection par exemple).
J'ai un pb relatif à l'allocation dynamique de matrices à 2 dimensions. En C/DOS, voici la manière
que j'utilise pour réservezr la mémoire nécessaire dans le tas éloigné :
___________________________________________________________

#include <alloc.h>

int far **d2;
int NoL, NoC, k;

main()
{
d2=farcalloc(NoL, sizeof(int*)); /*NoL=Nombre de Lignes de la matrice */
for(k=0; k<NoL; k++)
{
d2[k]=farcalloc(NoC, sizeof(int)); /*NoL=Nombre de Colonnes de la matrice */
}
}
___________________________________________________________

Quelle pourrait etre la traduction de cela en Borland C++ ?
Merci d'avance de votre aide.
"Svissen"

1 réponse

  1. josch83
     
    /*
    *
    * Voici une petite fonction qui pourais t'être pratique.
    *
    */

    #include <stdlib.h>

    short alloc_matrix(int **ptr_table, int height, int weight);

    int main(){

    int table **table;

    alloc_matrix(table,4,5);

    *(*(table+2)+2)=3; // equal to : table[2][2]=3;

    return 0;
    }

    short alloc_matrix(int **ptr_table, int height, int weight){

    int **my_table, count1, count2;

    my_table=malloc(sizeod(int)*height);

    for(count1=0;count1<height;count1++){
    *(my_table+count1)=(int *)malloc(sizeof(int)*weight);
    }

    for(count1=0;count1<height;count1++){
    for(count2=0;count2<weight;count2++){
    *(*(my_table+count1)+count2)=0x0;
    }
    }

    ptr_table=my_table;

    return 0;
    }

    // Bonne chance
    // josch83
    0
    1. djoly Messages postés 2 Date d'inscription   Statut Membre
       
      Merci de ta réponse; je teste quand j'aurai le temps....
      Cordialement
      0