Allocation de mémoire

Signaler
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Messages postés
321
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
14 mai 2005
-
Je dois faire des petites allocations de mémoire pour des structures de quelques octets. Quelle fonction devrais-je utiliser? HeapAlloc, LocalAlloc, VirtualAlloc? Je ne vois pas la vraie différence entre ces fonctions. Merci

8 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
HeapAlloc

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
merci
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Hello

Quelqu'un pourrait-il en profiter pour donner quelques explications sur les différences de ces 3 fonctions ?

Merci d'avance.

Chouchou
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
implicitement, cela faisait aussi partie de ma question, je ne vois qu'une personne pour nous expliquer ca...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
En fait que 2: HeapAlloc et VirtualAlloc.
LocalAlloc est a considerer quasi comme obsolete.

Pour faire de l'ultra condense, alloc de petits morceaux ira plus vite par HeapAlloc. Si trop gros, le bebe est repasse en interne a VirtualAlloc.
Dans tous les cas se referer a Richter qui consacre plusieurs chapitres sur le sujet avec exemples.
Gestion de la memoire sous Windows, un vrai roman mais passionnant.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
321
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
14 mai 2005
2
Pourquoi ne pas conserver l'allocation standard du C ou C++ (malloc/free ou new/delete) ?

Je ne vois pas trop l'interêt d'utiliser les API Windows dans ce cas, surtout qu'au niveau portabilité, c'est forcément un gros inconvénient que d'utiliser les API Windows quand on peut s'en passer...

C'est juste une question...

Jock
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
La portabilite n'est pas forcement l'objectif de tout le monde, on peut y preferer la performance sur un systeme particulier.
Lis Richter et tu verras ce qu'on peut se permettre avec API qui est inconcevable avec les instructions standards.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
321
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
14 mai 2005
2
Oui, j'ai lu Ritcher (d'ailleur au passage merci de m'avoir conseillé cette lecture il y a quelques mois, c'est très interressant).

Cependant, les gestionnaires mémoires virtuelles de Windows sont très très pauvres... qu'on se le dise (et pourtant je ne suis pas un anti Windows).

A vérifier en faisant un benchmark... (sous 95/98, ce sera flagrant... sur 2000/XP, beaucoup moins).

Jock