Allocation dynamique d'un tableau [Résolu]

Signaler
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007
-
Messages postés
29
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
16 juin 2008
-
Bonjour à tous,

J'ai trouvé quelques thème sur ce forum concernant ma question, mais je n'arrive pas à l'appliquer...

J'aimerai allouer dynamiquement la mémoire de mon tableau.

J'ai une structure de la forme:

typedef

struct{
 PCHAR dllName;
 PCHAR fctName;
 DWORD fctAddress;
 DWORD retAddress[4098];

 int returnAddrCount;
}FUNCTIONDATA;FUNCTIONDATA fctData[1024];

Comme vous pouvez le constater, mon tableau est initialisé à 1024, et un autre tableau à 4098

Sur ce forum, j'ai trouvé une partie de la réponse:

Tableau= (int *)calloc(dim1*dim2*dim3, sizeof(int));
Tableau[(dim1*dim2*x)+(dim2*y)+z]

Mais je ne comprends comment l'appliquer à ma situation. Je ne sais pas si mon tableau sera d'une taille de 1 ou suppérieure... donc je n'ai aucune idée sur les valeurs de dim1, dim2, dim3,....

Merci pour vos réponses.

 ElpenS

6 réponses

Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
Yop,

Seule solution à ton problème, c'est ce que l'on appel les liste chainée, ce sera dans ton cas, des structures FUNCTIONDATA liées ensemble par un pointeur. cppfrance est bourré d'explication à ce sujet. Ce n'est pas bien compliqué si tu maitrise bien les pointeurs. Dans le cas contraire ...

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
J'ai pas bien compris...
Si tu veux un tableau simple à 1024 éléments  tu fais uniquement :
FUNCTIONDATA* Tableau=(FUNCTIONTDATA*)malloc(1024*sizeof(FUNCTIONDATA));
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Pardon erreur de frappe;
FUNCTIONDATA* Tableau=(FUNCTIONDATA*)malloc(1024*sizeof(FUNCTIONDATA));
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

Justement, je ne connais pas la taille de mon tableau... j'aimerais quelle soit alloué dynamiquement, si par exemple j'ai 1025, mon programme va planter pour l'instant...

Merci

 ElpenS
Messages postés
14839
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
6 novembre 2020
93
Yop!
Si tu ne connais pas la taille de ton tableau, je te conseille d'utiliser un vecteur. Tu pourras alors ajouter ou supprimer des éléments, sans te soucier de la taille de celui-ci...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
29
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
16 juin 2008

salut tout le monde
a mon avie tu vas entrer par clavier le nbre des elements du tableau c est a dir tu vas ajouter par exemple
//cout<<entrer le nbre d'element du tableau; 
//cin>>n;
n est le nbre d'element du tableau
et apres tu fait l'allocation
//tableau=new int[n]
teste la, et pose le probleme si tu le rencontre.?