Accueil > Forum > > > > pointeurs et structures
pointeurs et structures
mardi 11 juillet 2006 à 21:36:18 |
pointeurs et structures

glipper
|
Bonjour, j'ai declaré dans un de mes programmes une structure dans un fichier header : typedef struct Fiche { char iop[30]; } Fiche;
Ensuite, dans un fichier .c, j'ai procédé comme ceci : .... Fiche *Ami; Ami = DownloadFiche();
free(Ami); ....
Voilà la fonction DownloadFiche() : Fiche* DownloadFiche() { Fiche *fiche; ... fiche = (Fiche*) malloc(sizeof(Fiche)*n+1); // avec n une variable calculée dans la fonction .... return fiche; }
J'aurais deux questions sur ce programme : - Tout d'abord, n'y a t'il pas de fuite mémoire en procédant comme je l'ai fait : attribuer dynamiquement de la mémoire dans la fonction DownloadFiche, puis la liberer en dehors de la fonction.
- Ensuite, comment puis-je connaître le nombre de fiches que retourne la fonction ? En effet, dans la fonction, le malloc attribue de la mémoire pour n fiches. Mais comment puis-je ensuite connaître la taille de Ami ? Si je fais sizeof(Ami) je récupere la taille en octet je suppose, et strlen() c'est pour les chaines de characteres, pas pour les chaines de structure....
Si vous avez d'autres commentaires à faire sur ce code, n'hésitez pas à m'en faire part. Merci d'avance, Glipper
|
|
mardi 11 juillet 2006 à 21:45:40 |
Re : pointeurs et structures

mondrone
|
Si tu ne retourne qu'un pointeur sur l'un comme c'est le cas (je ne dit pas qu'il est possible de faire autrement) alors tu as intérêt à chaîner tes fiches en interne : struct Fiche contiendrait alors un struct Fiche *suivant de cette manière tu peux te ballader facilement dedans, manipuler les fiches en les changeant d'emplacement et saoir le nombre de fiches (quand tu parcours l'arbre, tu compte)
 Qui ne tente rien... Ne risque pas d'avoir grand chose !!!
|
|
mardi 11 juillet 2006 à 21:46:42 |
Re : pointeurs et structures
|
mardi 11 juillet 2006 à 22:50:30 |
Re : pointeurs et structures

BruNews
|
sizeof() donnerait 4 (taille d'un pointeur) sur system 32 et 8 sur 64 mais rien de plus intéressant.
ciao... BruNews, MVP VC++
|
|
mercredi 12 juillet 2006 à 00:14:25 |
Re : pointeurs et structures

Zootella
|
Réponse acceptée !
>fiche = (Fiche*) malloc(sizeof(Fiche)*n+1);
A quoi sert le + 1 ?
Pour la taille suffit de passer un pointeur sur int.
Fiche *Ami; int taille; Ami = DownloadFiche( &taille );
------------------------------------
free(Ami); Fiche* DownloadFiche( int *size ) { int n = 5; Fiche *fiche = (Fiche*) malloc(sizeof(Fiche)*n); *size = n; return fiche; }
|
|
mercredi 12 juillet 2006 à 00:20:52 |
Re : pointeurs et structures

glipper
|
Oki zootella j'y avais pensé à cette methode... je pense que je vais faire comme ça. Sinon pour le (Fiche*) malloc(sizeof(Fiche)*n+1);
j'ai mis le +1 car pour une chaine de charactere, on rajoute +1 pour le '\0'. Là, je savais pas trop alors dans le doute, je l'ai mis (mieux vaut trop que pas assez). Je vais l'enlever :) Merci
|
|
Cette discussion est classée dans : fonction, mémoire, ami, fiche, downloadfiche
Répondre à ce message
Sujets en rapport avec ce message
Question sur l'allocation de mémoire... [ par kod32 ]
Salut,j'ai une question concernant l'allocation de mémoire et notamment l'utilisation de la fonction malloc. Cette fonction permet de pointer vers un
Problème avec la fonction free dans visual basic. [ par tobi222 ]
J'ai créé une liste chainée toute simple avec où j'alloue de la mémoire dynamiquement et à la fin lorsque je détruis cette liste avec free visual m'en
Prob lecture adresse mémoire [ par xmaz57000 ]
Voilà je viens de recevoir un ordinateur industriel qui dispose en standard de 8 entrées TOR.Malheureusement, il n'y a aucun driver qui permet de récu
taille de libération mémoire [ par mezaya ]
Bonjour, Je voudrai savoir si il existe un moyen de récuperer la taille mémoire que va libérer la fonction free ? Voila en faite j'aimerai surcharge
Problème mémoire Visual C++ 2005, (pourtant il n'y a pas de mémoire "dynamiquement allloué") [ par Sim 2005 ]
J'ai un programme qui utilise beaucoup plus de mémoire qu'il ne le devrait. Toutes les variables sont statiques, il ne peut s'agir d'une fuite de mémo
Sauvegarder une adresse mémoire [ par gmorello ]
Bonjour, voici mon problème:Dans mon code j'ai une fonction importer d'une dll (Je n'ai pas acces au source de cette dll) qui me détraque mes adresses
Allocation dynamique de mémoire d'un tableau dans une fonction [ par DJfewos971 ]
Bonjour a tous,mon problème est de pouvoir alloué la mémoire dynamiquement d'un tableau dans une fonction.Voici mon problème niveau Code:#include #inc
Connaitre la consommation mémoire [ par Ilsundal ]
Bonjour à tous, Sous Windows pour connaître l'utilisation mémoire d'une application j'utilise la fonction "GetProcessMemoryInfo", j'aurais souhaité s
Bouffage de mémoire :( [ par max12 ]
http://www.cppfrance.com/code.aspx?ID=31739 Le problème se trouve au niveau de la fonction void TraitementPacket(int par
fonction qui retourne une chaine==>libération de la mémoire [ par tibob51 ]
Bonsoir,J'ai eu besoin d'utiliser une fonction me retournant une chaine,après mes recherches sur cpp france j'ai trouvé la syntaxe suivante:char* Fonc
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|