Fonction qui renvoie un tableau [Résolu]

Signaler
Messages postés
97
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
20 janvier 2008
-
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
Salut

Quelqu'un pourait m'ecrire une fonction qui renvoie un tableau[12] ?

merci, je galere un peu pour ça.

11 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Pense à mettre un delete[] tab a la fin de ton programme
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

le mieux c'est de renvoyer un pointeur vers le premier élément du tableau.

int* mon_tableau()
{
int *tab = new int[12]; //on alloue un tableau de 12 éléments
//int tab[12] surtout pas un tableau 'local'

tab[11] = 0;

return tab;
}
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
Autant renvoyer un vector ou passage/retour par reference du tableau.
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
l'os le fait tout seul le delete non?

_______________________


Omnia vincit labor improbus
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
Lorsque le processus se termine, oui, mais ca ne concerne que la
libération de la mémoire, si ton objet ouvre des fichiers, des
connexions réseaux ou autres il vaut mieux ne pas oublier le delete .
Et comme tu n'est pas censé connaitre l'implémentation de l'objet (en
général), il ne faut jamais oublier delete en C++, alors qu'en C on
pourrait se passer de free dans ce cas la.
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

se passer de free() ... !?!?!?

chaque malloc()/calloc()/realloc() requiere un free() obligatoire
tout comme en C++, un new requiere un delete obligatoire

~(.:: NitRic ::.)~
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
oups.. ben faudra que je complete ma fonction exit() alors ... :)

_______________________


Omnia vincit labor improbus
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
NitRic, exact, de nombreux système désalloue la
mémoire allouée au programme, mais ce n'est pas un comportement
standard, donc toujours faire free et delete (mais garder en tete que
oublier un free peut etre vu comme une erreur mineure alors que pour un
delete cela peut avoir de grave consequences).



Arnaud16022, pour quitter un programme
lorsque qu'une erreur survien, il vaut mieux utiliser une exception
plutot qu'une fonction qui invoque exit() (ou autre fonctions qui
quittent le programme sans remonté de blocs)
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
en fait ma fonction c'est void desinitialize(void), mais sur le coup je ne trouvais plus le nom alors j'ai mis ca :$

_______________________


Omnia vincit labor improbus
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

Imagine un serveur ou tout autre programme qui reste open durant des jours et des jours, imagine des oublies(tel, libération de mémoire, etc ...) Conséquence? Tu alloue, alloue, alloue, ... sans free/delete => Fuite De Mémoire => Le système en as plein les bras après un certain temps => Manque de mémoire à prévoir => etc ...

UN malloc/realloc/calloc => UN free
UN new => UN delete

Il n'est aucunement question d'en oublier, c'est => Obligatoire!!!

~(.:: NitRic ::.)~
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
Je pense que tout le monde à compris ca quand meme !



On parle de la libération de pointeur qui n'a pas lieu d'etre liberé
pendant l'éxecution (et qu'on libère donc en fin de programme), comme
beaucoup de systèmes libèrent la mémoire allouée à un processus
lorsqu'il se termine, c'est transparent. Si dans ce cas il vaut mieux
ne pas oublier de liberer la mémoire c'est uniquemenet parce que
certains sytèmes ne le font pas.