Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2665 connectés 

  FORUM HardWare.fr
  Programmation
  C

  comment augmenter la taille du heap ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment augmenter la taille du heap ?

n°1319834
manu
Posté le 06-03-2006 à 22:26:28  profilanswer
 

bonjour, question un peu con j'ai l'impression mais je trouve pas la réponse : est-ce qu'on peut augmenter la taille du tas et si oui comment ? j'utilise borland 5.02.
j'arrive pas à déclarer plus de 40 Mo de variables environ dans le heap.
 
merci pour toute contribution à ma cause désespérée ...

mood
Publicité
Posté le 06-03-2006 à 22:26:28  profilanswer
 

n°1319838
skelter
Posté le 06-03-2006 à 22:38:03  profilanswer
 

on ne peut pas 'déclarer' de variable sur le tas, une variable en c est soit lexicale soit globale, par contre on peut allouer de la mémoire sur le tas (*alloc, free)
 
tu peux montrer ton code ?

n°1319841
manatane
En vous remerciant, bonsoir
Posté le 06-03-2006 à 22:43:47  profilanswer
 

il faut que ton os gere la memoire virtuelle, genre sous linux tu peux allouer 257Mo avec 256Mo de RAM :D (bon par contre si tu remplis les blocs alloués c est moins forcemment)
t es sous DOS ?

n°1319844
manu
Posté le 06-03-2006 à 22:53:23  profilanswer
 

oui je parlais de variables globales (tableaux de structures, etc ...) déclarées avant le main, elles sont bien dans le heap ? là j'ai pas le prg en question sous la main (au taf), mais le problème concerne juste la déclaration de 3 tableaux de structures qui pèsent environ 40 Mo.
lorsque je lance le "build" du projet, y veut pas en disant comment je peux étendre un tas de vapeur (how can you expand a vapor heap ?), il parle de lmem.c et il veut pas compiler.
quand je réduis la taille des tableaux ça passe sans problème.
 
de quoi s'agit-il ... ?

n°1319845
manu
Posté le 06-03-2006 à 22:55:57  profilanswer
 

manatane a écrit :

il faut que ton os gere la memoire virtuelle, genre sous linux tu peux allouer 257Mo avec 256Mo de RAM :D (bon par contre si tu remplis les blocs alloués c est moins forcemment)
t es sous DOS ?


 
j'ai mis 2h30 à écrire mon message précédent, du coup ...
 
tu déconnes avec le coup du DOS ... ? ou alors tu parles du DOS de windows XP, ce que j'utilise au boulot là où j'ai le problème

n°1319861
bjone
Insert booze to continue
Posté le 06-03-2006 à 23:23:30  profilanswer
 

DOS et 40Mo de global ? :D
 
et sinon les allocations mémoires, c'est pas possible ?

n°1319872
manu
Posté le 06-03-2006 à 23:37:10  profilanswer
 

bjone a écrit :

DOS et 40Mo de global ? :D


hein ... ?
 
sinon pour l'allocatoin de mémoire, c'est avant le main, y marchent pas les malloc, si ?

n°1319873
skelter
Posté le 06-03-2006 à 23:37:32  profilanswer
 

oui, fais une allocation dynamique

n°1320575
matafan
Posté le 07-03-2006 à 21:42:38  profilanswer
 

manu a écrit :

sinon pour l'allocatoin de mémoire, c'est avant le main, y marchent pas les malloc, si ?


Non, evidemment. Tes variables globales doivent etre des pointeurs, et tu alloues la memoire dans une routine d'initialisation appelee au debut de ton programme.

n°1323395
manu
Posté le 11-03-2006 à 18:25:59  profilanswer
 

ok c'est bon ça marche avec malloc, j'avais jamais eu besoin de trop de mémoire (je fais des interfaces entre applis par fichiers textes) donc j'avais la flemme de me pencher sur l'utilisation de la mémoire et je n'utilisais que des variables (locales et globales) sans allocation dynamique de la mémoire.
 
skelter, je croyais que les variables globales étaient prises sur le heap à cause du message quand je déclarais un trop gros tableau en variable globale : "how can you expand a vapor heap ?" puis quelque chose comme "error in LMEM.C".
 
merci à tous.
 

mood
Publicité
Posté le 11-03-2006 à 18:25:59  profilanswer
 

n°1323438
breizhbugs
Posté le 11-03-2006 à 19:58:00  profilanswer
 

Bon en fait,
tu avais besoin d'allouer dynamiquement de la memoire, mais sinon pour repondre à ta question initiale, modifier la taille du "tas", c'est dans les options du linker que ca se passe...

n°1323479
manu
Posté le 11-03-2006 à 21:32:35  profilanswer
 

ok,merci, dans "32-bit Image" c'est ça ?

n°1323591
breizhbugs
Posté le 12-03-2006 à 11:28:33  profilanswer
 

Je sais pas, vois la doc!

n°1323614
skelter
Posté le 12-03-2006 à 12:14:20  profilanswer
 

manu a écrit :

ok,merci, dans "32-bit Image" c'est ça ?


 
mais c'est n'importe quoi, ton probleme n'a rien à voir avec la taille du tas (qui à priori n'est pas limité), tu croyais que tes 40mo en globale étaient alloués sur le tas
 
fais un malloc

n°1323692
manu
Posté le 12-03-2006 à 15:21:08  profilanswer
 

skelter a écrit :

mais c'est n'importe quoi, ton probleme n'a rien à voir avec la taille du tas (qui à priori n'est pas limité), tu croyais que tes 40mo en globale étaient alloués sur le tas
 
fais un malloc


 
oui je sais, c'est ce que j'ai mis un peu plus haut, j'utilise maintenant malloc.
et effectivement la taille du tas ne semble pas limitée, je viens d'allouer 1Go sans problème pour tester.

n°1324368
matafan
Posté le 13-03-2006 à 16:31:40  profilanswer
 

Si, la taille du tas est limitee. En 32 bits tu ne peux adresser que 4GB, et le tas fais donc forcement moins de 4GB. En pratique la taille maximale est meme inferieur, puisque tu dois aussi pouvoir adresser ton propre texte, ta stack, tes donnees, le texte du kernel, le texte et les donnees des libs... Par exemple sur AIX, le heap est limite a 3.25GB pour une appli 32 bits.

n°1325664
manu
Posté le 15-03-2006 à 10:34:54  profilanswer
 

merci pour ces précisions. 4 Go (ou un peu moins) ça va comme limite ...

n°1326182
bjone
Insert booze to continue
Posté le 15-03-2006 à 20:35:46  profilanswer
 

2Go sous Windows, 3Go sous Linux, et je crois 4Go sous Win64 (pour un process Win32 bien évidemment).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  comment augmenter la taille du heap ?

 

Sujets relatifs
[javascript] Impossible de réduire la taille d'un popupTaille d'un bloc (pour prendre la hauteur de tte la page ?
Effacement d'un fichier qui a une certaine tailleChoix de la taille de la police avec imagestring
Largeur d'un texte suivant sa police et sa tailletaille de chaine
fonction FORM : modification taille[Flash8 AS]recupérer la taille de 2 scene voir une precisement
taille textboxTaille exe et utilisation memoire programme
Plus de sujets relatifs à : comment augmenter la taille du heap ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR