VirtualAlloc, HeapAlloc, GlobalAlloc : que choisir?

Tout sur les langages de programmation.

VirtualAlloc, HeapAlloc, GlobalAlloc : que choisir?

Messagepar Crisanar » 01 Août 2005, 10:16

Bonjour à tous,
Je suis en train de développer une applic qui utilise une liste liée dynamique dont chaque élément est une structure de type :
Code: Tout sélectionner
DL_element struct
   Val      DWORD ?
   pNext DWORD ?
DL_element ends

Pour créer dynamiquement chaque élément j'utilise VirtualAlloc. Mais j'ai cru lire que VirtualAlloc arrondi chaque allocation à la taille d'une page.
Or ma liste peut contenir énormément d'éléments donc si a chaque élément j'utilise 4096 bytes (taille d'une page sur mon ordi si je ne me suis pas trompé), j'aurais vite rempli la mémoire.
Que me conseillez-vous d'utiliser?

Merci d'avance,
Crisanar
Image
Avatar de l’utilisateur
Crisanar
Semi-Dieu du cracking
Semi-Dieu du cracking
 
Messages: 1821
Inscription: 23 Mai 2004, 16:52
Localisation: Belgique

Messagepar yarocco » 10 Août 2005, 21:10

Tu peux essayer de calculer le besoin de memoire et reserver la memoire par rapport a ce resultat non ?

Genre, t'as un gros calcul qui produit des resultats en chaine qui sont lies (d'ou l'interet d'une liste chainee), tu peux calculer avant les calculs la profondeur de tes calculs et multiplier par rapport a la taille d'un calcul la place que cela te prendra.
Je sais pas si j'ai ete clair alors n'hesites pas a redemander des precisions
yarocco
Mutation en crackeur...
Mutation en crackeur...
 
Messages: 96
Inscription: 06 Février 2005, 23:58

Messagepar skirby » 10 Août 2005, 22:12

GlobalAlloc : c'est vieux, c'est lent et déconseillé par microsoft

VirtualAlloc : j'ai pas tout compris mais j'ai l'impression que ton explication est la bonne (il réserve de la mémoire en arrondissant à la page supérieur même pour seulement 2 octects)

HeapAlloc : c'est ce que j'utiliserais (plus puissant que GlobalAlloc) et en plus c'est recommandé par microsoft. Le seul truc c'est que ton bloc mémoire ne peut pas être déplacé

Sinon, jette un oeil la dessus http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/memory_management_functions.asp

Bon courage
skirby
Dieu du cracking
Dieu du cracking
 
Messages: 2160
Inscription: 29 Novembre 2004, 09:53

Messagepar Crisanar » 12 Août 2005, 23:44

Salut à tous,
skirby, a bien résumé ce que j'ai lu à plusieurs endroits il me semble.
Dans mon applic, vu que les allocations étaient de petites taille, j'ai utilisé HeapAlloc.
Merci pour vos réponses :)
Image
Avatar de l’utilisateur
Crisanar
Semi-Dieu du cracking
Semi-Dieu du cracking
 
Messages: 1821
Inscription: 23 Mai 2004, 16:52
Localisation: Belgique


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron