begin process at 2012 05 30 15:04:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

récupération de données de taille inconnue dans le main


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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 .

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,198 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales