Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
699 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème d'allocation d'un tableau dans une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'allocation d'un tableau dans une fonction

n°669444
Darsh
Posté le 10-03-2004 à 12:01:54  profilanswer
 

Bonjour, voici mon problème: dans une fonction quelconque, je souhaite appeller une autre fonction en lui passant comme paramètre un tableau 2D non encore alloué au niveau de la taille. Un exemple simplifié donnerait ca :
 

Code :
  1. int (*Tab)[10];
  2.     test(Tab);
  3.     int i,j;
  4.     for (i=0;i<10;i++)
  5.     {
  6.         for (j=0;j<10;j++)
  7.             cout << Tab[i][j] << " " ;
  8.         cout << endl;
  9.     }


 
Puis dans la fonction, j'alloue la place pour mon tableau et je le rempli. Par exemple comme ca:

Code :
  1. void test(int (*Tab)[10])
  2. {
  3.     int i,j;
  4.     Tab=new int[10][10];
  5.     for (i=0;i<10;i++)
  6.         for (j=0;j<10;j++)
  7.             Tab[i][j]=i+j;
  8.     for (i=0;i<10;i++)
  9.     {
  10.         for (j=0;j<10;j++)
  11.             cout << Tab[i][j] << " " ;
  12.         cout << endl;
  13.     }
  14. }


 
Mon problème est alors qu'apparement, la création de mon tableau se fait localement et que je ne peux plus y accéder quand je sors de ma fonction. J'ai essayé de passer le tableau en static, mais au final ca devra être dans une librairie à part et le static n'a pas l'air de passer :'( Quelqu'un aurait il une idée pour que je puisse éviter la destruction de mon tableau quand je sort de ma fonction "test" ?
Merci par avance  :)


Message édité par Darsh le 10-03-2004 à 12:19:43
mood
Publicité
Posté le 10-03-2004 à 12:01:54  profilanswer
 

n°669637
Ummon
Posté le 10-03-2004 à 14:30:58  profilanswer
 

Tu dois faire une boucle pour allouer les tableaux les uns après les autres, en gros :

Code :
  1. for(int i=0; i<10; i++)
  2.    Tab[i] = new int[10];

 
 
Juste en passant, essaye de mettre les noms des variables en minuscule, la première lettre en majuscule est utilisé pour les noms des classes (bien sur ce n'est qu'une directive).

n°669638
youdontcar​e
Posté le 10-03-2004 à 14:31:01  profilanswer
 

Darsh a écrit :

la création de mon tableau se fait localement et que je ne peux plus y accéder quand je sors de ma fonction

La création de ton tableau n'est pas locale, un bout de mémoire alloué par new / malloc reste alloué jusqu'à sa désallocation manuelle.
 
Ce qui est détruit, c'est le pointeur. Le pointeur passé à ta fonction est copié lorsqu'il est passé à test(). En sortie, il est détruit, ton pointeur global n'a pas changé.
 
Donc, copie par référence ou pointeur de pointeur. Ou pointeur vers une vraie classe array, pas un truc genre int* [10] qui pètera dès que tu auras besoin de 11 éléments.

n°669702
Darsh
Posté le 10-03-2004 à 14:51:27  profilanswer
 

Merci bcp :-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème d'allocation d'un tableau dans une fonction

 

Sujets relatifs
[VB Excel] probleme dans textBox [RESOLU]Fonction $_FILES avec limitation d'upload
[ASM GNU x86] Problème de segmentation fault [Résolu]Problème avec les Fonctions d'images comme getimagesize()
recherche de source : gestion avancée de tableau/grilleUtilisation de la fonction QueryPerformanceFrequency probleme ....
fonction d'analyse d'un champs de base de donnéeDreamweaver/SQL> problème de requête
J'ai un problème avec SCCANF() et les types de variables 
Plus de sujets relatifs à : Problème d'allocation d'un tableau dans une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR