Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Allocation dynamique de tableau de structures... [ Divers / Général ] (manta7)

mardi 22 mai 2007 à 18:58:27 | Allocation dynamique de tableau de structures...

manta7

Le titre est déja pas mal compliqué...
Voila je vous explique mon probleme avec une allocation simple :
J'ai la structure

struct unite {
    int right, left, up, down;
}unite[4];

Je l'emploie normalement en utilisant des unite[0].right=42....

Mais j'ai eu envie de le faire dynamiquement alors j'écris

struct unite {
    int right, left, up, down;
}*unite;

en allouant avec un

unite=malloc(NUNITE*sizeof(struct unite)); (NUNITE c'est une constante qui est égale a 4 pr le précédent exemple.

Et la bien entendu je tombe sur un bon vieux segfault...
Je pense que la solution est dans une allocation au cas par cas en utilisant un for de 0 à NUNITE mais je n'y suis pas parvenu non plus..

Pliz

mardi 22 mai 2007 à 19:17:45 | Re : Allocation dynamique de tableau de structures...

aardman

Membre Club
Salut,
si tu déclare unite comme un pointeur, sizeof(unite) ne representera pas la taille de ta structure, mais la taille d'un pointeur (qui est plus petit que ta structure).
Le mieux est de déclarer deux types:
struct unite {
    int right, left, up, down;
}unite, *p_unite;
et d'utiliser le bon type au bon endroit.


mardi 22 mai 2007 à 20:28:58 | Re : Allocation dynamique de tableau de structures...

tibob51

Membre Club
int nb;
unite=new unite[nb];
//pour le dtruire
delete[] unite;

mardi 22 mai 2007 à 20:44:55 | Re : Allocation dynamique de tableau de structures...

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

typedef struct _UNITE {
    int right, left, up, down;
} UNITE, *LPUNITE;

UNITE *punite;
punite = (LPUNITE) malloc(sizeof(UNITE) * 4);

ciao...
BruNews, MVP VC++


mercredi 23 mai 2007 à 13:33:08 | Re : Allocation dynamique de tableau de structures...

acx01b

Salut

je sais pas pour vous mais personnelement je déteste les typedef et autres #define d'un type représentant un pointeur ou un tableau

si le type est un pointeur alors il doit y avoir des * qui le montrent
si le type est un tableau alors il doit y avoir des [] qui le montrent

mercredi 23 mai 2007 à 21:26:12 | Re : Allocation dynamique de tableau de structures...

BruNews

Administrateur CodeS-SourceS
Question d'habitude, on l'emploie énormément sous Windows.

ciao...
BruNews, MVP VC++

vendredi 25 mai 2007 à 16:40:04 | Re : Allocation dynamique de tableau de structures...

manta7

Merci pour vos réponses au fait ça marche et c'est niquel.



Cette discussion est classé dans : allocation, struct, right, unite, nunite


Répondre à ce message

Sujets en rapport avec ce message

Existe t il une fonction équivalente à mid right ou left ( du VB) en cpp ? [ par Stoomm ] Existe t il une fonction équivalente à mid right ou left ( du VB) en cpp ? Merci d'avance et A+. Stoomm. Probleme de reception dans un serveur visual C++ pour windows [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi.voici les source du client et du serveurLe Serveur fichier.h [ par bidules ] Bonjour,j'aimerais savoir s'il est possible de mettre des structures dans un fichier d'entete.Car j'ai fais l'essai mais lors de la compilation pour c aide sur printf [ par superromu ] que fait cette commande ?elle affiche right si 1 ou 0 ?printf("\r\nHandedness: %9s\r\n",data[word_no] & 0x000400 ? "Right" : "Left");merci. Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ] Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse struct constante [ par zarkin ] Bonjour,Je suis ss Dev-C++.Peut-on définir une structure constante en l'initialisant à partir d'une autre structure constante ?ex:const type1 MaConsta problème de pointeur et d'objet pointé [ par leptit ] Bonjour, Je vous présente le problème en C:struct assoc { int l, *n ; }*n est un pointeur vers une alloc dynamique de memoirestyle tableau d'entier.Je struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 allocation dynamique [ par hobbes ] Bonjour,Mon probleme est que je ne connais pas a l avance la taille du tableau que je souhaite cree. Je pensais alors :creer un tab de maniere dynamiq new ... [ par payen ] bonjour,une petite question en ce qui concerne le calcul d'un temps : si je fais le code suivant, est ce que j'obtiens le temps REEL d'allocation?deb


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.