begin process at 2012 05 29 18:38:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

pb de memoire?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb de memoire?

mardi 8 juillet 2003 à 11:19:15 | pb de memoire?

ganfoud

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]!!
mardi 8 juillet 2003 à 12:29:52 | Re : pb de memoire?

BruNews

Administrateur CodeS-SourceS
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...


-------------------------------
Réponse au message :
-------------------------------

> 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]!!
mardi 8 juillet 2003 à 13:05:58 | Re : pb de memoire?

ganfoud

oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
et comment je fais pour faire une seule alloc?



-------------------------------
Réponse au message :
-------------------------------

> 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...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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]!!
>
mardi 8 juillet 2003 à 13:14:28 | Re : pb de memoire?

BruNews

Administrateur CodeS-SourceS
int noctets = (nbre_decoup+1) * sizeof(double) etc.... selon besoin.
BYTE *pmem = (BYTE*) malloc(noctets);
ensuite tu places tes pointeurs dedans directement.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
> et comment je fais pour faire une seule alloc?
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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]!!
> >
>
mercredi 9 juillet 2003 à 13:49:03 | Re : pb de memoire?

ganfoud

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?



-------------------------------
Réponse au message :
-------------------------------

> int noctets = (nbre_decoup+1) * sizeof(double) etc.... selon besoin.
> BYTE *pmem = (BYTE*) malloc(noctets);
> ensuite tu places tes pointeurs dedans directement.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
> > et comment je fais pour faire une seule alloc?
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > 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]!!
> > >
> >
>
mercredi 9 juillet 2003 à 13:51:24 | Re : pb de memoire?

ganfoud

et quand j'ai fini d'utiliser un tableau, pour liberer la memoire, le delete[] nom_var suffit?



-------------------------------
Réponse au message :
-------------------------------

> 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?
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > int noctets = (nbre_decoup+1) * sizeof(double) etc.... selon besoin.
> > BYTE *pmem = (BYTE*) malloc(noctets);
> > ensuite tu places tes pointeurs dedans directement.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
> > > et comment je fais pour faire une seule alloc?
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > 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...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > 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]!!
> > > >
> > >
> >
>
mercredi 9 juillet 2003 à 13:58:28 | Re : pb de memoire?

BruNews

Administrateur CodeS-SourceS
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...


-------------------------------
Réponse au message :
-------------------------------

> 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?
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > int noctets = (nbre_decoup+1) * sizeof(double) etc.... selon besoin.
> > BYTE *pmem = (BYTE*) malloc(noctets);
> > ensuite tu places tes pointeurs dedans directement.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > oui mais nbre_decoup, je le connais pour mon test, mais il peut varier.
> > > et comment je fais pour faire une seule alloc?
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > 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...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > 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]!!
> > > >
> > >
> >
>


Cette discussion est classée dans : double, memoire, nbre, sol, decoup


Répondre à ce message

Sujets en rapport avec ce message

[urgent] Régression polynômiale [ par CeNedra83 ] je code en C++ et je voudrais réaliser une régression polynomiale d'un certain ordre avec x et y mes tableaux de coordonnées, a mon tableau de coeffic probleme reallocation memoire vecteur [ par savoyard ] double *b;//fction allocation memoire: (permet d'allouer pas obligatoirement à partir de b[0] mais d ou on veut:double *dvector(int nl,int nh){double Convertion d'un unsigned long Double en string [ par yves_r ] Bonjour, J'ai besoin de convertir le résultat d'un calcul en string (char *). Si j'utilise sprintf( s, "%Ld", mon_double), j'obtient une chaine variable en memoire [ par fcbouan ] voila,j'aimerai trouver une méthode pour retrouver en memoire une variable ( ex pointeur sur une liste chainee) quand mon programme plante ( c sous li Erreur Memoire ne peut pas être read [ par asis1 ] Bonjour  à tous,J'ai une erreur du genre "L'instruction à l'adresse @ emploie l'adresse memoire @. la memoire ne peut pas être "Read" ouu "write" suiv Lib Qt + bout de code = GUI ?! [ par Toxyz ] Bonsoir, tout d'abords je n'ai que tres tres peu de connaissances en c++ et pratiquement aucune en pooj'ai, il y a quelques jours fini une tres jolie stocker un double dans un byte[] [ par sdisp ] bonjour,je souhaite récupérer un double entré par l'utilisateur au clavier et le stocker dans un byte[], je pense qu'il faut faire un byte[8] car réel convertir double en char [ par nonyus ] SVP, comment convertir un double en char???Merci pour vos reponses. memoire saturée avec un programme opengl [ par mikey84 ] Bonjour! J'ai un problème avec un programme que j'ai fait. Enfait, lorsqu'il est lancé, je fais un gestionnaire des taches et la mémoire augmente jusq Accroissement continu de la memoire utilisée [ par Ptlpn ] Salut,Alors la , j ai un gros probleme : j arrive a la fin de mon projet, mais probleme, hier soir je faisait qe planter. J ai donc lancé le gestionna


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales