Pb de memoire?

Signaler
Messages postés
25
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
15 juillet 2003
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Salut!
mon probleme, c'est que je pense que je sature la memoire mais j'en suis pas sûr:
j'ai:
double** sol=new double[nbre_decoup+1];
for (i=0;i<nbre_decoup+1; i++)
sol[i] = new double[10];

nbre_decoup vaut 999 dans ce cas.
et à la sortie du for, j'ai la derniere valeur d'une liste chainée (qui pour l'instant n'a aucun rapport avec sol[][]) qui disparait...
et je suis sûr que c'est pendant le for: pour nbre_decoup inferieur à 900, ca marche.
est ce que passer toutes mes valuers en float aiderait? ou vous avez un moyen pour resoudre ca?
pke apres, j'ai encore plusieurs tableaux de taille [nbre_decoup+1]!!

6 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
evite les allocs repetitives dans boucles longues.
Vu que tu connais nbre_decoup, tu tentes 1 seule alloc pour tous tes besoins et ensuite si ok tu peux placer des pointeurs (castes) aux bons endroits du bloc memoire. Tu eviteras a l'utilisateur de voir le sablier sur l'ecran.
BruNews, ciao...
Messages postés
25
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
15 juillet 2003

oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
et comment je fais pour faire une seule alloc?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
int noctets = (nbre_decoup+1) * sizeof(double) etc.... selon besoin.
BYTE *pmem = (BYTE*) malloc(noctets);
ensuite tu places tes pointeurs dedans directement.
BruNews, ciao...
Messages postés
25
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
15 juillet 2003

c quoi le type BYTE? je connais pas... et malloc c du C, non? le new ne convient pas??
en fait, j'ai passé toutes mes valeurs en float, sauf que maintenant, c une autre variable qui part en cou... pendant le for!
tu confirmes que c'est un pb de mémoire?
Messages postés
25
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
15 juillet 2003

et quand j'ai fini d'utiliser un tableau, pour liberer la memoire, le delete[] nom_var suffit?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
BYTE = unsigned char;
le new va bon pour une classe car il appelle le constructeur mais ici est tout simplement + court.
Faut etre curieux et aller voir l'implementation du 'new', apres des detours il finit chez malloc, alors ?
BruNews, ciao...