FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
Retourner un tableau d'objets dynamique
Retourner un tableau d'objets dynamique
Débuté par no, 10 aoû. 2004 06:10 - 1 réponse
Connectez-vous…
no
#1
Posté le 10 août 2004 - 06:10
Bonjour,
J'aimerai avoir des fonctions qui ne servent qu'à allouer dynamiquement des
objets ; mais lorsqu'on revient de ces fonctions, l'objet est automatiquement
libéré de la mémoire.
Voici les extraits de code:
---------------------------------------------
FleurCollection est une classe
fleurs est un tableau dynamique
FIN
---------------------------------------------------
Fleur est une classe
i est entier
FIN
PROCEDURE Constructeur(i est entier)
:i = i
----------------------------------------------------
PROCEDURE creerFleurs()
fc est une FleurCollection
mesFleurs est un tableau dynamique de 10 Fleur dynamique
i est un entier
POUR i=1 A 10
mesFleurs[i] = allouer une Fleur(i)
FIN
fc:fleurs = mesFleurs
RENVOYER fc
-----------------------------
PROCEDURE init()
roses est une FleurCollection dynamique
roses = creerFleurs()
--------------------------------
Le programme démarre init(), alloue correctement la mémoire, mais le destructeur
de fleurCollection est appelé juste après "RENVOYER fc", donc il semblerait
qu'on retourne fc et après on le libère. Résultat: je ne peux plus utiliser
la variable "roses" puisque je reçois le message:
"Erreur à la ligne 16 du traitement Procédure globale init.
L'objet dynamique roses a déjà été libéré."
J'ai Windev8 version 01-80310g.
Merci pour votre aide,
Sébastien
Signaler
0
0
support.bdr
#2
Posté le 10 août 2004 - 18:06
Il est normal que fc soit détruit avant RENVOYER fc. Tu as déclaré FC de manière
statique, la variable n'existera donc que dans la fonction. Techniquement
je pense que roses reçoit bien un tableau mais non alloué. Change fc en FleurCollection
dynamique, alloue-le et renvoie-le. Tant qu'il existera une référence vers
ce tableau, il ne sera pas libéré implicitement.
"Sébastien" <no@spam.com> wrote:
Bonjour,
J'aimerai avoir des fonctions qui ne servent qu'à allouer dynamiquement
des
objets ; mais lorsqu'on revient de ces fonctions, l'objet est automatiquement
libéré de la mémoire.
Voici les extraits de code:
---------------------------------------------
FleurCollection est une classe
fleurs est un tableau dynamique
FIN
---------------------------------------------------
Fleur est une classe
i est entier
FIN
PROCEDURE Constructeur(i est entier)
:i = i
----------------------------------------------------
PROCEDURE creerFleurs()
fc est une FleurCollection
mesFleurs est un tableau dynamique de 10 Fleur dynamique
i est un entier
POUR i=1 A 10
mesFleurs[i] = allouer une Fleur(i)
FIN
fc:fleurs = mesFleurs
RENVOYER fc
-----------------------------
PROCEDURE init()
roses est une FleurCollection dynamique
roses = creerFleurs()
--------------------------------
Le programme démarre init(), alloue correctement la mémoire, mais le destructeur
de fleurCollection est appelé juste après "RENVOYER fc", donc il semblerait
qu'on retourne fc et après on le libère. Résultat: je ne peux plus utiliser
la variable "roses" puisque je reçois le message:
"Erreur à la ligne 16 du traitement Procédure globale init.
L'objet dynamique roses a déjà été libéré."
J'ai Windev8 version 01-80310g.
Merci pour votre aide,
Sébastien
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WINDEV 2024
WEBDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Etats & Requêtes
Hors-sujet
Hors-sujet
Outils
Outils
WINDEV 26
WINDEV 2024
WINDEV 2024
WINDEV 25
WEBDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte