Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
698 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  "out of memory" dans la liste d'initialisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"out of memory" dans la liste d'initialisation

n°297692
umag
deux yeux sinon rien
Posté le 31-01-2003 à 08:52:50  profilanswer
 

Bonjour !
Comme c'est mon premier message sur ce forum, j'en profite pour saluer tout le monde  :hello:
 
Lors de la réalisation d'un programme en c++, je me suis heurté au pb suivant : j'ai une classe relativement importante qui contient pas mal de petites classes. Ces classes, je les agrège en interne, par valeur, et par conséquent j'appelle leurs contructeurs dans la liste d'initialisation du constructeur de ma classe principale.
 
Truc::Truc(paramètres)
 :classe1(p1,...,pn),classe2(...),...classeZ(...)
{
// là, je fais des choses
}
 
Cela fonctionnait plutôt bien jusqu'à ce que je passe des paramètres un peu complexes à mes classes agrégées, typiquement
 
Truc::Truc(paramètres)
 :classe1(n, k/n),classe2(...),...classeZ(...)
{}
 
Bref, une ch'tite division par-ci, une multiplication par là...
A partir de ce moment, mon programme s'est mis à planter en m'envoyant un message "out of memory".
 
Pour sauver la face, j'ai ajouté des méthodes à mes classes et je passe leurs paramètres à l'intérieur du constructeur, mais j'aimerais quand même en savoir plus sur cette liste d'initialisation:
- Ai-je fait une erreur ?
- Y a t-il une limitation du nombre d'appels de méthodes (liée à la taille de la pile, par exemple) ?
- Est-ce un pb de compilo ?
- Est-ce déjà arrivé à qqn d'autre ?
 
J'utilise gcc-2.95.3 sous linux (SuSe), et ce "out of memory" ressemble beaucoup à une exception levée...
 
a+
Umag

mood
Publicité
Posté le 31-01-2003 à 08:52:50  profilanswer
 

n°297693
kadreg
profil: Utilisateur
Posté le 31-01-2003 à 08:56:21  profilanswer
 

umag a écrit :


Truc::Truc(paramètres)
 :classe1(p1,...,pn),classe2(...),...classeZ(...)
{
// là, je fais des choses
}


 
Tu peux mettre ça en plus précis. Notamment comment est écrit paramètre.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°297699
umag
deux yeux sinon rien
Posté le 31-01-2003 à 09:09:38  profilanswer
 

Il n'y a pas grand chose :
 
Truc::Truc(int a, int b, float c, int d)
  :classe1(0, b/c, 0.3, 15),classe2(b/c, b),attr1(a),attr2(d)
{
// ...
}
 
que j'ai remplacé par
 
Truc::Truc(int a, int b, float c, int d)
  :classe1(0.3, 15),classe2(),attr1(a),attr2(d)
{
   float v = b/c;
   // ...
 
   classe1.setParam(0,v);
   classe2.setParam(v,b);
 
   // ...
}
 
et là ça marche !
 
Je devrais peut-être préciser que classe1 et classe2 contiennent des attributs de classe Matrice, dérivée de vector<double>.

n°298654
Musaran
Cerveaulté
Posté le 01-02-2003 à 05:51:17  profilanswer
 

:hello:
Je ne vois pas d'erreur dans le code, et je ne connais pas ce problème.
Donc: http://forum.hardware.fr/icones/flag1.gif


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  "out of memory" dans la liste d'initialisation

 

Sujets relatifs
[ACCESS] Filtrer données liste déroulante par rapport à une autre list[VB] Une liste de bon sites pour VB(last update 16/02/2003)
[HTML&PHP] Probleme de SELECTED dans une liste déroulanteListe des utilisateurs sous unix
Une liste de valeurs acceptables pour des entiers[VC++] Traitement d'une liste de Nombres
[C] Liste des processus qui tournent sur le system (windows)?[Access] Récupérer le contenu d'une liste
comment dupliquer une liste de pointers ? (les objets pointés aussi).liste de choix -> 1 ou tous
Plus de sujets relatifs à : "out of memory" dans la liste d'initialisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR