Accueil > Forum > > > > récupération de données de taille inconnue dans le main
récupération de données de taille inconnue dans le main
vendredi 23 novembre 2007 à 15:23:34 |
récupération de données de taille inconnue dans le main

fatenov
|
Salut tout le monde, Je veux récupérer dans le main le contenu d'une variable calculée dans un module dans le main, mais le problème est que la taille de cette variable n'et déterminée que dans ce module. J'ai pensé à utiliser l'allocation dynamique de la mémoire mais cette allocation est écrasée à la sortie du modula là où elle a été déclarée donc récupère à la sortie mon pointeur vide. Quelqu'un pourra-t-il me proposer une solution? Je ne veux pas faire une allocation dans le main de taille max ou un tableau statique sauf si c'est la seule solution qui me se présente. Merci.
|
|
vendredi 23 novembre 2007 à 15:39:57 |
Re : récupération de données de taille inconnue dans le main

Pistol_Pete
|
Salut, Il faut passer par l'allocation dynamique: Dans la fonction tu l'alloues dynamiquement avec la taille qu'il te faut et dans le main tu déclares un pointeur pour recupérer son adresse. e.g. int *fonc() { int Taille=50; int *Tab=new int[50]; return Tab } int main() { int *MonTab=fonc(); return 0; } A+ Mon site internet : [ Lien ]
|
|
vendredi 23 novembre 2007 à 15:41:37 |
Re : récupération de données de taille inconnue dans le main

Pistol_Pete
|
N'oublie pas de faire un delete []MonTab dans le main pour libérer la mémoire utilisé. Mon site internet : [ Lien ]
|
|
vendredi 23 novembre 2007 à 15:52:56 |
Re : récupération de données de taille inconnue dans le main

fatenov
|
Merci, mais c'est une solution dans un cas simple. Mais moi je veux utiliser une precédure (void) pas une fonction car je veux faire cette itération pour plusieurs variables.
Tiens, sauf si ma fonction me retourne un tableau de pointeurs chaque élément pointe sur un tableau ??? Cm cela:
int *fonc() { int *Tab;
int Taille1=50; int Taille2=100;
int *Tab1=new int[50]; int *Tab2=new int[100];
Tab[1]= Tab1; Tab[2]=Tab2;
return Tab ; } int main() { int *MonTab=fonc(); return 0; }
Est ce une bonne solution?
|
|
vendredi 23 novembre 2007 à 16:00:00 |
Re : récupération de données de taille inconnue dans le main

DeAtHCrAsH
|
Pourquoi ne pas tout simplement passer une variable out à ta fonction ? Comme ca tu y mets la taille de l'allocation effectuée.
Pistol_Pete> Au passage il est fortement déconseillé d'effectuer le retour d'une fonction sur un pointeur déclaré au sein de cette fonction.
Shell
|
|
vendredi 23 novembre 2007 à 16:09:15 |
Re : récupération de données de taille inconnue dans le main

Pistol_Pete
|
Ok deathcrash Cependant, j'utilise souvent cette méthode je la trouve plus pratique et aussi sure que de passer la variable en paramètre. Maintenant au programmeur de savoir ce qu'il fait. Mon site internet : [ Lien ]
|
|
vendredi 23 novembre 2007 à 16:10:16 |
Re : récupération de données de taille inconnue dans le main

fatenov
|
Si je comprends bien ma fonction me retourne la taille de mon tableau? Mais cela ne va pas résoudre le problème, comment je récupérerai les données que je vais mettre dans le tableau dans le main???
Mais pourquoi il déconseillé de retourner un pointeur?
|
|
vendredi 23 novembre 2007 à 16:21:15 |
Re : récupération de données de taille inconnue dans le main

Pistol_Pete
|
Non mon prog retourne l'adresse vers le tableau et non la taille du tableau. Donc dans le main tu auras les données mise dans ton tableau. Et en ce qui concerne le fait de retourné un pointeur ca peut etre dangereux exemple: si tu fais: printf("%i", fonc() ); Tu as alloué la mémoire dans fonc() et comment fais tu pour la desalloué? Tu ne peux plus. Mon site internet : [ Lien ]
|
|
vendredi 23 novembre 2007 à 16:24:51 |
Re : récupération de données de taille inconnue dans le main

DeAtHCrAsH
|
Pistol_Pete > "plus pratique et aussi sure " : J'en suis pas si sure... A la sortie de la fonction le système considère que les variables alloués au sein de ta fonction n'ont plus lieu d'etre, et marque leur espace mémoire comme "libre" pour de nouvelles allocations. En gros tu n'es pas sure d'y trouver ce que tu cherches a la sortie de la fonction car le système peut réaffecter l'emplacement mémoire a n'importe quel moment! Puis pour info, lorsque l'on code propement à chaque new on ecrit le delete correspondant, meme au sein d'une fonction! Shell
|
|
vendredi 23 novembre 2007 à 16:25:33 |
Re : récupération de données de taille inconnue dans le main

fatenov
|
Pistil_Pete => Oui j'ai bien compris ce que tu voulais faire  Mais je parlai de la proposition de deatchcrash, ben j'aurai du préciser c'était destiné à qui  .
|
|
Cette discussion est classée dans : taille, données, récupération, main, allocation
Répondre à ce message
Sujets en rapport avec ce message
Récupération des données audio sous DirectX [ par kleinjer ]
Bonjour,Je débute avec DirectX. J'ai une interface qui me permet d'ouvrir un fichier wav ou mp3 mais j'aurais besoin de recupérer les données audio af
Payer ? Récupération données logiciel [ par cestouf ]
Je souhaite récupérer des valeur présentes dans le logiciel de démonstration présenté dans la page www.fxcmfrench.com. Je souhaite récupérer les taux
Réduire taille de fichier API [ par Galmiza ]
Salut,J'ouvre le fichier en lecture+ecriture avec CreateFile, je récupère les données, les modifie, pointe le début du fichier puis je réinjecte des d
Allocation statique de tableaux de taille importante [ par THEwarrior333 ]
Bonjour, je me demandais s'il était possible de connaître la mémoire disponible sur la pile, car en tentant d'allouer des tableaux de taille très impo
Taille variable pour un tableau. [ par amentag ]
Bonjour.J'ai plusieurs tableaux déclarés en "globale" (juste avant le main) et j'aimerai leur allouer une taille variable, comme ceci:tab1[MAX][300];t
!!! Pb d'allocation mémoire !!! [ par yoyo269 ]
Bonjour à tous !Comme le titre l'indique, j'ai un petit souci avec l'allocation de mémoire.En fait j'ai un char*, auquel j'applique un malloc. Ensuite
Parser une chaine en pour placer dans un tableau [ par JAYDEN ]
Bonjour,Désolé de vous déranger mais dans le cadre d'un projet j'ai besoin a un moment donner de parser une suite de binaire et de les stocker dans un
Récupération de données sur serveur [ par guitchou ]
Bonjour,J'aimerais savoir comment faire pour récupérer les données d'un serveur, je code une IHM avec codeblocks et wxFormBuilder. Je dois afficher le
Récupération de données via ethernet [ par damieniut ]
Bonjour, Je dois récupérer les informations d'un régulateur via Ethernet, je possède son adresse IP mais je ne sais pas comment faire pour récupérer s
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|