URL: https://linuxfr.org/forums/programmation-c--2/posts/pointeurs-et-gestion-m%C3%A9moire Title: Pointeurs et gestion mémoire Authors: Sébastien Le Roux Date: 2007年01月08日T15:38:51+01:00 Tags: fortran Score: 0 Bonjour à tous, j'ai écris un code en fortran 90 et j'ai récemment décidé de lui ajouter une belle interface gtk. Rien de plus simple pourrait on dire ... au détail près qu'il faut que je 'traduise' mon code fortran en C. Connaissant le langage C je ne m'inquiète pas trop pour autant .. toute fois une question me démange: Dans mon code en fortran j'alloue la mémoire dynamiquement de façon casi-systématique. Ceci est très facile en fortran y compris pour les tableaux de dimensions multiples. Je sais bien comment gérer mon déplacement dans des tableaux à dimension multiples en fortran et/ou en C. Par exemple pour un tableau déclaré de façon générique en C: int TAB[100][100][100]; for (i=0;i<100;i++){ £spaces£ £/spaces£for (j=0;j<100;j++){ £spaces£ £/spaces£for (k=0;j<100;k++){ £spaces£ £/spaces£TAB[i][j][k]=1; £spaces£ £/spaces£} £spaces£ £/spaces£} } Toutefois j'ai observé que l'allocation dynamique de tableaux à dimension multiples en C était un chouilla plus complexe que celle du fortran et en particulier consiste en une allocation successive de tableau de pointeurs: int ***TAB; CALLOC(TAB, int**, 100); for (i=0; i<100; i++){ £spaces£ £/spaces£CALLOC(TAB[i],int*,100); £spaces£ £/spaces£for (j=0; j<100; j++){ £spaces£ £/spaces£CALLOC(TAB[i][j],int,100); £spaces£ £/spaces£} } (Je passe sur la définition de la macro CALLOC) ... ma question est la suivante l'allocation de mémoire ce fait elle comme dans le premier cas ? c'est à dire dans des zones contigues, auquel cas puis-je donc me déplacer dans le tableau comme dans mon premier exemple ? ou bien y a t'il une subtilité dans ce cas précis .. dans mon code je manipule de très gros tableaux un mauvaise manipulation sur ces tableaux pourrait avoir un effet conséquent sur le temps de calcul. Merci de votre aide