Tableau dynamique de structure plusieurs structure différente en C ?

Signaler
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012
-
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012
-
Bonjour a tous,

Voila je débute dans l'allocation dynamique en C voici mon problème.

Je possédé 5 structure de taille différentes qui vont contenir des paramètres propre à leurs fonctions (ex : light, HVAC, heater, Cooler etc)

le problème est que ces fonction peuvent êtres dans n'importe quel ordre, donc si je le fait en statique je devrais créer je devrais multiplier les structure et donc consommer bien trop de mémoire RAM car chaque fonction peuvent apparaître plusieurs fois ! (je ne sais pas si je suis bien clair.....)

Mon idée est donc de créer un tableau de taille dynamique contenant des structure de taille variable.

J'ai bien trouvé des sources sur le site cppfrance par contre j'ai l'impression qu'il créer un tableaux avec des structure identique....

Comment faire pour pour créer un tableau avec des structure différents ?

Merci

11 réponses

Messages postés
37
Date d'inscription
jeudi 22 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2011
15
Salut,

Déclare une structure parent uCGenerique qui contiendra un char type et un pointeur void *uC.

'type' contiendra une valeur définie correspondant au type de structure pointé par 'uC'.
Quand tu assignes uC tu castes ton pointeur de structure en void*, à l'inverse quand tu veux accéder à un de ses membres tu castes avec le pointeur de structure correspondant à 'type'.

Ton tableau sera un tableau de *uCGenerique.

++
Messages postés
15187
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2021
100
Hello,
Comment faire pour pour créer un tableau avec des structure différents ?

Tu ne peux pas. Un tableau contient forcément un seul type de données.
Néanmoins, tu peux biaiser en déclarant un tableau de pointeurs. Mais, lors du parcours de ton tableau, tu ne sauras pas de quel type est ton objet.

La parade est, en programmation objet, de définir un objet Parent et de faire hériter tous tes autres objets de cette classe Parent. Ainsi, tu peux avoir un tableau de Parents mais avec des objets "exotiques"

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

La parade est, en programmation objet, de définir un objet Parent et de faire hériter tous tes autres objets de cette classe Parent.

Oui, encore faut-il que les class aient un rapport entres elles
Messages postés
15187
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2021
100
Certes, ne serait-ce que pour garder une certaine cohérence et une bonne maintenabilité.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

Ok merci pour vos réponses, je programme sur µC donc exit la POO...

J'ai 5 allocation mémoire a faire je dois donc créer 5 tableau de taille 1 dynamique ?

C'est pas un peu bête de faire un tableau de 1 ?
Messages postés
15187
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2021
100
Qu'est-ce que tu cherches à faire exactement?
Quels sont tes structures? Pourquoi un tableau?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

Pour l'explication, j'ai 5 contrôleur qui peuvent être du même type ou bien tous différent. Pour chaque contrôleur une structure spécifiques.

Donc au final je créer une allocation dynamique pour ces 5 contrôleur donc a chaque nouvelle boucle du programme je vérifie si le type du contrôleur à changé si oui je fais un free et de nouveaux un malloc pour le nouveaux contrôleur.

Pourquoi un tableau?


Les seul exemples que j'ai vu sur le net sont des allocation dynamique de tableau.... Après je suis ouvert à toute proposition.
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

Ok... Tu n'aurais pas un petit exemple ( pour la structure ce va) mais poure le reste c'est un peu flou pour moi
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

les fautes d'orthographe que j'ai fais... désolé je ne suis pas encore bien réveillé....
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

Sachant que c'est de la donnée brute, moi je passerai par un tableau de char* mais bon.
char *data[5];//declaration
data[0] = new char[TailleStruct];//allocation
montypestruct *mastruct = (monstypestruct*)data[0];//cast pour travailler de manière ordonée
//...
delete data[0];//destruction après

ps: pour les fautes on a vu bien pire ne t'en fais pas ;)
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

Oh mon dieu j'ai oublié la balise et je suis le premier à gueuler
char *data[5];//declaration 
data[0] = new char[TailleStruct];//allocation 
montypestruct *mastruct = (monstypestruct*)data[0];//cast pour travailler de manière ordonée 
//... 
delete data[0];//destruction après