Allocation dynamique d'un tableau

Résolu
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007 - 21 oct. 2007 à 17:22
samaka1986 Messages postés 29 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 16 juin 2008 - 21 oct. 2007 à 20:40
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

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
21 oct. 2007 à 18:02
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]
3
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
21 oct. 2007 à 17:37
J'ai pas bien compris...
Si tu veux un tableau simple à 1024 éléments  tu fais uniquement :
FUNCTIONDATA* Tableau=(FUNCTIONTDATA*)malloc(1024*sizeof(FUNCTIONDATA));
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
21 oct. 2007 à 17:38
Pardon erreur de frappe;
FUNCTIONDATA* Tableau=(FUNCTIONDATA*)malloc(1024*sizeof(FUNCTIONDATA));
0
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
21 oct. 2007 à 17:48
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15314 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 30 septembre 2022 103
21 oct. 2007 à 17:59
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
0
samaka1986 Messages postés 29 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 16 juin 2008
21 oct. 2007 à 20:40
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.?
0