Augmentation de la mémoire utilisée

Signaler
Messages postés
29
Date d'inscription
samedi 4 octobre 2003
Statut
Membre
Dernière intervention
28 juillet 2006
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Bonjour,

pour les besoins d'une application, je dois réaliser un tableau composé d'un million de variables et pouvant utiliser jusqu'a 16 Mo de RAM. Pendant mes recherches j'ai vu qu'il était possible d'utiliser un heap ou malloc.
Pouvez vous me dire quelle est la méthode la plus sure?
Et pouvez vous me donner qq conseils sur l'implementation?

Merci d'avance

Mathieu

3 réponses

Messages postés
29
Date d'inscription
samedi 4 octobre 2003
Statut
Membre
Dernière intervention
28 juillet 2006

j'ai trouvé un moyen de résoudre mon problème:
si j'utilise des pointeurs en déclarant mon tableau ainsi double * array = new double[1000000], ca marche mais si je crée mon tableau en faisant double array[1000000], ca plante.
Pouvez vous m'expliquer pourquoi et y a-t-il des riques en utilisant les pointeurs?

PS: au cas ou vous ne l'aviez pas devine: 1) je debute
                                                              2) je suis pas tres doué!

Merci
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
double array[1000000];
n'est pas une alloc mémoire mais une réservation sur la pile, il est clair qu'une telle quantité fera sauter la pile.

new ou malloc demandent au systéme d'allouer une zone mémoire.

ciao...
BruNews, MVP VC++
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
avec malloc, on peut controler si l'opération s'est bien déroulée. et en cas d'échec, faire un traitement adhoc (défrag de la ram par ex)

avec new, je crois qu'on peux récupérer l'erreur mais il faut passer par les exception

pour l'alloc sur la pile, je ne crois pas que le controle soit faisable.

___________________________________________________________
Magicalement
Nono