GlobalAlloc [Résolu]

yepla75 34 Messages postés jeudi 19 octobre 2006Date d'inscription 13 juin 2007 Dernière intervention - 14 nov. 2006 à 11:57 - Dernière réponse : racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention
- 14 nov. 2006 à 14:10
Bonjour,

Quelle est la différence (en gros) entre GlobalAlloc et malloc ?

Faut-il libérer la mémoire ?

La syntaxe que je vois souvent est : char *c = GlobalAlloc(GPTR, MAX_PATH) ; que signifie GPTR et que vaut MAX_PATH ?

Merci et bonne journée
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 14 nov. 2006 à 12:13
3
Merci
Salut,
GlobalAlloc est une API Windows.
malloc est une fonction du C standard.
Bien sûr, toute zone de mémoire allouée doit être libérée en fin d'utilisation.
GPTR combine deux flags : GMEM_FIXED et GMEM_ZEROINIT. Ca veut dire que la zone mémoire allouée est fixe (non déplaçable). La fonction retournera un pointeur sur la zone allouée. Le 2ème flag permet de mettre à 0 tous les octets de cette zone.
Le 2ème paramètre de GlobalAlloc() permet de préciser la taille de la zone à allouer. MAX_PATH vaut 260 je pense.

Merci racpp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de racpp
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 14 nov. 2006 à 13:03
0
Merci
salut,

tu peux regarder ceci par exemple :
http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_21114225.html

ShareVB
Commenter la réponse de ShareVB
yepla75 34 Messages postés jeudi 19 octobre 2006Date d'inscription 13 juin 2007 Dernière intervention - 14 nov. 2006 à 13:55
0
Merci
Merci,

Pour la valeur de MAX_PATH, j'ai brièvement regardé sur le net ; certains disent 256 caractères, d'autres 260.

J'ai mal posé ma question concernant la différence entre GlobalAlloc et malloc : si on fait un programme en C/API WIN32, pour quels types d'applications préfèrera-t-on l'un à l'autre, ou sont-ils "équivalents" ?
Commenter la réponse de yepla75
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 14 nov. 2006 à 14:10
0
Merci
La valeur de MAX_PATH dépend des compilateurs. Elle correspond au nombre maximum de caractère dans un chemin pour fichiers.
Si tu veux travailler sur Windows, il est préférable d'utiliser GlobalAlloc(). Si tu veux que ton code soit portable pour Linux etc, utilise malloc().
Commenter la réponse de racpp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.