UDF > Memory >


_MemGlobalAlloc

Alloue un nombre donné d'octets sur le tas

#include <Memory.au3>
_MemGlobalAlloc ( $iBytes [, $iFlags = 0] )

Paramètres

$iBytes Le nombre d'octets à allouer. Si ce paramètre est égal à zéro et si le paramètre $iflags est défini sur $GMEM_MOVEABLE, la fonction retourne le handle d'un objet de mémoire qui est marqué comme mis au rebut.
$iFlags [optionnel] Attributs d'allocation mémoire:
    $GMEM_FIXED - alloue de la mémoire fixe. La valeur de retour est un pointeur.
    $GMEM_MOVEABLE - alloue de la mémoire déplaçable. Les blocs de mémoire ne sont jamais déplacés dans la mémoire physique, mais ils peuvent être déplacés à l'intérieur du tas par défaut.
        La valeur de retour est le handle de l'objet mémoire.
        Pour convertir le handle en pointeur, utilisez la fonction _MemGlobalLock().
        Cette valeur ne peut pas être combinée avec $GMEM_FIXED.
    $GMEM_ZEROINIT - Initialise le contenu de la mémoire à zéro
    $GHND - Combine $GMEM_MOVEABLE et $GMEM_ZEROINIT
    $GPTR - Combine $GMEM_FIXED et $GMEM_ZEROINIT

Valeur de retour

Succès: Retourne le handle de l'objet mémoire nouvellement allouée.
Échec: Retourne 0.

Remarques

Le gestionnaire de la mémoire Windows ne fournit pas un tas local séparé du tas global.

Si cette fonction réussit, elle alloue au moins la quantité de mémoire requise.
Si la quantité réelle allouée est supérieure à la quantité demandée, le processus peut utiliser la totalité de la quantité allouée.
Pour déterminer le nombre réel d'octets alloué, utilisez la fonction _MemGlobalSize().
Si le tas ne contient pas suffisamment d'espace libre pour satisfaire la demande, cette fonction retourne NULL.

La mémoire allouée par cette fonction est garantie alignée sur 8 octets.

Pour exécuter du code généré dynamiquement, utilisez la fonction _MemVirtualAlloc() pour allouer de la mémoire et la fonction _Mem_VirtualProtect() pour accorder l'accès $PAGE_EXECUTE.

Pour libérer la mémoire allouée, utilisez la fonction _MemGlobalFree().

En relation

_MemGlobalFree, _MemGlobalLock, _MemGlobalSize, _MemVirtualAlloc

Voir aussi

Consultez GlobalAlloc dans la librairie MSDN.