Alloue un nombre donné d'octets sur le tas
#include <Memory.au3>
_MemGlobalAlloc ( $iBytes [, $iFlags = 0] )
$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 |
Succès: | Retourne le handle de l'objet mémoire nouvellement allouée. |
Échec: | Retourne 0. |
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().
_MemGlobalFree, _MemGlobalLock, _MemGlobalSize, _MemVirtualAlloc
Consultez GlobalAlloc dans la librairie MSDN.