Pb de memoire?

cs_ganfoud Messages postés 25 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 15 juillet 2003 - 8 juil. 2003 à 11:19
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 juil. 2003 à 13:58
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 juil. 2003 à 12:29
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...
0
cs_ganfoud Messages postés 25 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 15 juillet 2003
8 juil. 2003 à 13:05
oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
et comment je fais pour faire une seule alloc?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 juil. 2003 à 13:14
int noctets = (nbre_decoup+1) * sizeof(double) etc.... selon besoin.
BYTE *pmem = (BYTE*) malloc(noctets);
ensuite tu places tes pointeurs dedans directement.
BruNews, ciao...
0
cs_ganfoud Messages postés 25 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 15 juillet 2003
9 juil. 2003 à 13:49
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ganfoud Messages postés 25 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 15 juillet 2003
9 juil. 2003 à 13:51
et quand j'ai fini d'utiliser un tableau, pour liberer la memoire, le delete[] nom_var suffit?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2003 à 13:58
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...
0
Rejoignez-nous