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

  FORUM HardWare.fr
  Programmation
  C++

  erreur d'allocation mémoire dans une application console C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur d'allocation mémoire dans une application console C++

n°2128738
soufianee
Posté le 28-02-2012 à 18:15:45  profilanswer
 

bonjour tous le monde, pendant l’exécution de mon application console avec C++ avec le compilateur cygwin sous netbenas 6.9.1 cet erreur est s'affiche toujoure en fin  :
 
cygdrive/C/program files/netbeans 6.9.1/ide/bin/nativeexecution/dorun.sh: line 33: 5508 aborted <core dumped> sh "{SHFILE}"
 
je fait des teste pour trouver la source d'erreur et je constate que la construction d'un objet qui génère l'erreure mais je ne trouve pas des soucis dans le constructeur.  
SVP si il y'a des idée pour régler ce soucis je vous appréciez beaucoup
 

mood
Publicité
Posté le 28-02-2012 à 18:15:45  profilanswer
 

n°2129558
in_your_ph​ion
Posté le 04-03-2012 à 18:01:31  profilanswer
 

soufianee a écrit :

SVP si il y'a des idée pour régler ce soucis je vous appréciez beaucoup


 
ton code

n°2129581
soufianee
Posté le 04-03-2012 à 23:12:57  profilanswer
 

ce dessus le code de la classe à partir de quelle généré cet erreur :
 

Code :
  1. #ifndef FUZZIFICATION_H
  2. #define FUZZIFICATION_H
  3. #include "Tlist.h"
  4. #include "Matrice.h"
  5. #include "FCM.h"
  6. #include "RCGA.h"
  7. class Fuzzification
  8. {
  9. private:
  10. cl_Lst<double> donnee;
  11. double *centre;
  12. Matrice u;
  13. int nbrcentre;
  14. int nbrdonnee;
  15. FCM *fcm;
  16.         RCGA *rcga;
  17. double critere;
  18. int m;
  19. public:
  20. Fuzzification(void);
  21. Fuzzification(Fuzzification& );
  22. Fuzzification(cl_Lst<double>&,int);
  23. ~Fuzzification(void);
  24. void setFcm(FCM *);
  25.         void setRcga(RCGA *);
  26. int getNbrcentre();
  27. int getNbrdonnee();
  28. double getCritere();
  29. double getCentre(int);
  30. double getU(int,int);
  31. void operator=(Fuzzification& );
  32. int runFcm();
  33. double calcj(double,double,double,double);
  34. double calculCout();
  35. double minCentre();
  36. void valider();
  37.         void runRCGA();
  38. };
  39. #include "Fuzzification.h"
  40. Fuzzification::Fuzzification(void)
  41. {
  42. m=2;
  43. nbrcentre=0;
  44. nbrdonnee=0;
  45. }
  46. Fuzzification::Fuzzification(cl_Lst<double>& l,int nc)
  47. {
  48. m=2;
  49. nbrdonnee=l.size();
  50.         nbrcentre=nc;
  51. donnee=l;
  52. centre=new double[nbrcentre];
  53. Matrice m(nbrdonnee,nbrcentre);
  54. u=m;
  55. }
  56. Fuzzification::Fuzzification(Fuzzification& f)
  57. {
  58. m=2;
  59.         nbrdonnee=f.getNbrdonnee();
  60. nbrcentre=f.getNbrcentre();
  61. u=f.u;
  62. centre=f.centre;
  63. donnee=f.donnee;
  64. }
  65. Fuzzification::~Fuzzification(void)
  66. {
  67. delete [] centre;
  68. delete &u;
  69. delete &donnee;
  70. }
  71. void Fuzzification::setFcm(FCM *f)
  72. {
  73. fcm=f;
  74. }
  75. void Fuzzification::setRcga(RCGA* r)
  76. {
  77.     rcga=r;
  78. }
  79. int Fuzzification::getNbrcentre()
  80. {
  81. return nbrcentre;
  82. }
  83. int Fuzzification::getNbrdonnee()
  84. {
  85. return nbrdonnee;
  86. }
  87. double Fuzzification::getCritere()
  88. {
  89. return critere;
  90. }
  91. double Fuzzification::getCentre(int i)
  92. {
  93. return centre[i];
  94. }
  95. double Fuzzification::getU(int i,int j)
  96. {
  97. return u(i,j);
  98. }
  99. void Fuzzification::operator=(Fuzzification &f)
  100. {
  101. nbrdonnee=f.getNbrdonnee();
  102. nbrcentre=f.getNbrcentre();
  103. u=f.u;
  104. centre=new double[nbrcentre];
  105. for(int i=0;i<nbrcentre;i++)
  106. {
  107.  centre[i]=f.getCentre(i);
  108. }
  109. donnee=f.donnee;
  110. }
  111. int Fuzzification::runFcm()
  112. {
  113. fcm->initCentre(centre,nbrcentre,donnee.getMin(),donnee.getMax());
  114. fcm->calculDegres(donnee,centre,nbrcentre,u,m);
  115. return fcm->fcmProcessus(donnee,centre,nbrcentre,u,m);
  116. }
  117. void Fuzzification::runRCGA()
  118. {
  119.     rcga->initChr(nbrcentre,centre,donnee.getMin(),donnee.getMax());
  120.     rcga->calcFitness(donnee);
  121.     rcga->sortChromosome();
  122.     rcga->calcPrportion();
  123.     rcga->sortAsProportion();
  124.     rcga->crossover();
  125. }
  126. double Fuzzification::calcj(double u,double m,double x,double c)
  127. {
  128. double p=pow(u,m);
  129. double val=pow(fabs((x-c)),2);
  130. return p*val;
  131. }
  132. double Fuzzification::calculCout()
  133. {
  134. double som=0;
  135. double som2=0;
  136. for (int j=0;j<nbrcentre;j++)
  137.  {
  138.   som=0;
  139.   for(int i=0;i<nbrdonnee;i++)
  140.      {
  141.    som+=pow(u(i,j),m)*pow(fabs(donnee[i]-centre[j]),2);
  142.   }
  143.   som2+=som;
  144.    }
  145. return som2;
  146. }
  147. double Fuzzification::minCentre()
  148. {
  149. double min=fabs(centre[0]-centre[1]);
  150. double temp;
  151. for(int i=0;i<nbrcentre;i++)
  152. {
  153.  for(int j=(i+1);j<nbrcentre;j++)
  154.  {
  155.   temp=fabs(centre[i]-centre[j]);
  156.   if(temp<min) min=temp;
  157.  }
  158. }
  159. return pow(min,2);
  160. }
  161. void Fuzzification::valider()
  162. {
  163. critere=calculCout()/(nbrdonnee*minCentre());
  164. }
  165. #endif /* FUZZIFICATION_H */

n°2129634
olivthill
Posté le 05-03-2012 à 11:58:55  profilanswer
 

delete &u;
delete &donnee;

Ces delete ne correspondent pas à des new. Et comme les delete sont souvent à l'origine de core dump, voir si ça ne marcherait pas mieux sans eux.

n°2129724
in_your_ph​ion
Posté le 05-03-2012 à 22:50:00  profilanswer
 

Par ailleurs tu as des delete ton ton destructeur, alors que ton constructeur de copie ne copie que les adresses.
 
Tu vas donc potentiellement faire deux fois delete sur la même adresse, dès que tu aura copié ton objet et lorsque le second sera détruit => core dump.
 
 

n°2130224
soufianee
Posté le 08-03-2012 à 02:07:51  profilanswer
 

Merci beaucoup pour vos réponses    :sol:  ça marche bien quand je commenter le code de destructeur.
Mais comment coder mon destructeur sont revient ces erreurs.  :heink:

n°2130227
Joel F
Real men use unique_ptr
Posté le 08-03-2012 à 07:34:58  profilanswer
 

on n'alloue pas la memoire a la rache en c++ : std::vector est la pour ca.
 
google sur :
 
RAII
std::vector
Forme canonique de Coplien

n°2130411
soufianee
Posté le 08-03-2012 à 18:15:24  profilanswer
 

merci bcp pour tes indications :) je vais googler tout de suite la dessus


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

  erreur d'allocation mémoire dans une application console C++

 

Sujets relatifs
pb liste chainée et lecture de fichier Cbesoin d'aide programmation C
Optimisation et multi-thread en C[C#] WCF Routing et WIF
[HTML] Lancement d'une applicationdeveloppement application partage fichier avec metadata en java
PHP->C# Besoin de conversion svpCompilation parser XML pour intégration à un code C
intégrer .lib dans un projet C# (VS Express 2010) 
Plus de sujets relatifs à : erreur d'allocation mémoire dans une application console C++


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