Mon programme échoue avec le message d'erreur 'std :: bad_alloc'. Le programme est évolutif, j'ai donc testé sur une version plus petite avec valgrind et il n'y a pas de fuites de mémoire.Le programme C++ meurt avec std :: bad_alloc, MAIS valgrind ne signale aucune fuite de mémoire
Ceci est une application de la mécanique statistique, donc je fais fondamentalement des centaines d'objets, en changeant leurs données internes (dans ce cas stl des vecteurs de doubles), et en écrivant dans un fichier de données. La création d'objets se trouve à l'intérieur d'une boucle, alors quand elle se termine, la mémoire est libre. Quelque chose comme:
for (cont=0;cont<MAX;cont++){
classSection seccion;
seccion.GenerateObjects(...);
while(somecondition){
seccion.evolve();
seccion.writedatatofile();
}}
Donc il y a deux variables qui définissent le temps de calcul du programme, la taille du système et le nombre de pistes. Il y a seulement un crash pour les gros systèmes avec beaucoup de runs. Des idées sur la façon d'attraper ce problème de mémoire?
Merci,
Quels types de valeurs sont utilisés pour MAX en cas d'échec? Peut-être que vous manquez de mémoire? – wallyk
Vous pouvez manquer d'espace d'adressage sans avoir de fuite dans votre programme. –
MAX est de l'ordre de centaines, pour un système «gros», quand il échoue. – Gabriel