Fonction qui renvoie un tableau

Résolu
melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008 - 6 mars 2005 à 11:58
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 7 mars 2005 à 21:09
Salut

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

merci, je galere un peu pour ça.

11 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
6 mars 2005 à 12:23
Pense à mettre un delete[] tab a la fin de ton programme
3
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
6 mars 2005 à 12:21
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;
}
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
6 mars 2005 à 16:24
Autant renvoyer un vector ou passage/retour par reference du tableau.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
6 mars 2005 à 16:37
l'os le fait tout seul le delete non?

_______________________


Omnia vincit labor improbus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
6 mars 2005 à 17:01
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.
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
7 mars 2005 à 06:34
se passer de free() ... !?!?!?

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

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

_______________________


Omnia vincit labor improbus
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
7 mars 2005 à 19:01
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)
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
7 mars 2005 à 19:37
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
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
7 mars 2005 à 20:18
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 ::.)~
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
7 mars 2005 à 21:09
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.
0
Rejoignez-nous