begin process at 2012 05 28 07:20:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Allocation dynamique dans une fonction


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

Allocation dynamique dans une fonction

samedi 16 octobre 2004 à 19:02:45 | Allocation dynamique dans une fonction

Veovis

Salut,

Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tableau est plein le copier dans un nouveau tableau, supprimer le tableau et le recréer en plus grand, puis y remettre toutes les informations.

Si je mets les lignes présents dans la fonction, dans ma fonction main (tout marche impeccablement bien). Mais quand elle est dans ma fonction allocation() le programme ne marche plus.

Thanks pr les reponses.

Voici un bout de mon code :

class tableau {
private:
char nom[32];
int pointeur;

};

int n=2;
int nb=0;
int v;
tableau* tab;
tableau* t;

void* allocation();

void* allocation() {

for(int j=0;j<=n;j++) {
t[j].cpy(tab[j].return_nom(),tab[j].return_pointeur());
}

delete []tab;
tab=NULL;
v=n;
n=n+n;

tab=new tableau[n];

for(int m=0;m<=v;m++) {
tab[m].cpy(t[m].return_nom(),t[m].return_pointeur());
}
delete []t;
t=NULL;


}

int main() {
tab=new tableau[n];

if(n==i) allocation();


return 0;

}
samedi 16 octobre 2004 à 21:36:27 | Ya des truc halucinnants!!!

Gendal67


Euh, c'est un bout de code ?
Fodra que tu m'expliques pourquoi tu définis nom et pointeur comme private déja...ça allourdis le prog paske ça t'oblige à passer par des fonctions d'interface ==> surcharge de pile pour rien même si ça "protège" les données....enfin..

Sinon, sans vouloir critiquer mais juste pour améliorer ton code, ça, ça m'horripile : tableau* tab;
Un pointeur doit TOUJOURS recevoir une adresse !

Donc la syntaxe est: tableau* tab = NULL et apres tu le redéfinis dans main comme tu l'as fait ac tab = new tableau(n) (des parentheses, pas des crochets!! sauf si t'as surchargé l'opérateur [])


sinon, ça : void* allocation() <<< tu m'expliques ? la fct ne retourne rien alors pourquoi un tye void* et pas void tout court ?


sinon ton algo est compliqué et comme y manque la moitié de la source, jvois aps cmt remédier au probleme....si ça marchait sans utiliser une class, le probleme vient de l'allocation dynamique qq part dans la définition de ta classe...

Genda67, à votre service !
dimanche 17 octobre 2004 à 12:45:26 | Re : Allocation dynamique dans une fonction

plus_plus_fab

salut,

bon, c'est clair que le code est incomplet ou dans le désordre ou surement les deux !
donc impossible de t'aider ...

par contre pour l'encapsulation des données, ça ne surchage aucunement la pile. Ca provoque juste des appels de fonction supplémentaires, et si le temps d'exécution des fonctions est du meme ordre que le cout de leurs appels, tu les définis inline.

pour les pointeurs, c'est pas une obligation de les initialiser, tant que tu ne t'en sers pas avant de leurs avoir affecter une adresse. D'ailleurs on utilise jamais le macro NULL en C++ (uniquement en C).
Si on fait tab = new tableau[n], on construit une tableau de n éléments "tableau" en utilisant le constructeur par défaut.
tab = new tableau(n), on construit un élément "tableau" en utilisant le constructeur approprié (à un paramètre du type de n).

++
dimanche 17 octobre 2004 à 12:48:08 | Re : Allocation dynamique dans une fonction

Gendal67


Oui, c''est vrai plus_plus_fab, je suis d'accord avec toi (merci de me corriger :)), juste un truc ou je proteste toujours : les fonctions se servent de la pile !!! :-)

Genda67, à votre service !
dimanche 17 octobre 2004 à 13:45:31 | Re : Allocation dynamique dans une fonction

plus_plus_fab

oui exact, mon commentaire est moyen ...
l'utilisation de la pile pour l'appel de fonction a un cout vraiment moindre quand meme ! Et si on juge que c'est couteux (ie du meme ordre que le cout d'execution de la fonction elle meme), on la définit inline, et hop ! plus d'appel de fonction (dans la tres grande majorité des cas).
lundi 18 octobre 2004 à 16:27:07 | Re : Allocation dynamique dans une fonction

djl

en c++

NULL == 0, d'ailleur NULL n'est pas definie, si tu veux l'utiliser
definie la macros NULL 0


en c

NULL <-> ((void*)0) ou 0, la macros ets la pour ca


en c

void* et ses conversions implicites sert de type générique

en c++

ca sert à caster inutilement et à foutre la merde


en c99 comme en c++, les petites fonctions dont la définition est connue sont inliner à la compilation


Cette discussion est classée dans : fonction, int, tableau, tab, allocation


Répondre à ce message

Sujets en rapport avec ce message

Tableau en C [ par Mickylord ] Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction tableau d'entier. [ par gdpasmini ] Hello !j'ai un petit soucis avec une fonction qui renvoi un tableau en parametre... voila les details :Dans mes fonctions : int * boutonDecodFlux(void 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 Exercice sur Pointeurs, classes, héritage... [ par snoozriton ] Bonjour à tous, étant en train d'étudier le C++, j'ai quelques soucis avec un exercice. C'est un classique dont je vous donne l'énoncé : [b]1. Défini problème de allocation de tableau [ par boualiasma ] Bonsoir, Je voulais copier le contenu de fichier "exemple.txt" dans un tableau dynamique t de taille inconnue en avance. J'utilise le tableau pour fa Probleme passage tab** de fonctions a fonction. [ par Nitrakz ] Bonjour tous le monde ! Comme l'explique le titre j'ai un petit soucis pour passer un tableaux a 2 dimensions tab[i][j] d'une fonction a une autre. pile dynamique [ par korin221 ] Bonjour! Voila j'ai un problème. Je voudrais mélanger ma pile dynamique de façon aléatoire. Peut on directement mélanger la pile ou alors passer la pi Problème de définition de fonction dans une classe [ par labuche75 ] Bonjour à tous, je rencontre un problème à priori de définition de fonction dans la classe tableau permettant de manipuler de grands entiers nécessair passage de tableau à 3 dimensions en paramètre à une fonction [ par snake57 ] Bonjour à tous, J'ai un tableau à 3 dimensions que je veux afficher à partir d'une fonction. J'ai donc créé une fonction mais celle-ci affiche...n'im remplir un nombre dans un tableau [ par alex934 ] Bonjour, j'ai besoin de votre aide :) Voila je souhaite mettre un nombre stocké(int) dans un tableau exemple: int a=132; int tab[3]; je voudrais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,700 sec (3)

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