AllocateMemory()

Syntaxe

*Resultat = AllocateMemory(Taille [, Options])
Description
Alloue une zone mémoire contiguë remplie de zéros (caractère #Null).

Arguments

Taille La taille en octets de la nouvelle zone mémoire.
Options (optionnel) Peut être une des valeurs suivantes:
  #PB_Memory_NoClear: Ne pas remplir la zone de mémoire avec des zéros. Cela peut aider à l'avoir plus rapidement si la mémoire allouée est utilisée immédiatement.

Valeur de retour

Renvoie l'adresse de la mémoire allouée (pointeur), zéro sinon.

Remarques

La commande FreeMemory() peut être utilisée pour renvoyer la mémoire allouée au système.
La commande ReAllocateMemory() peut être utilisée pour changer la taille de la zone allouée.
Toutes les zones de mémoire allouées sont automatiquement libérées lorsque les programmes se terminent.

Note: Si le programme se bloque à cette commande, c'est généralement dû à une corruption de la mémoire plus tôt dans le programme, après écriture, dans une zone en dehors de la zone de mémoire allouée. La cause de ce genre d'erreur peut être trouvée en utilisant le purificateur

Exemple

  *MemoireID = AllocateMemory(5000)
  If *MemoireID
    Debug "Adresse de début de la zone mémoire de 5000 octets :"
    Debug *MemoireID
    PokeS(*MemoireID, "Stocke cette chaîne dans la zone mémoire")
    FreeMemory(*MemoireID)  ; sera également effectué automatiquement à la fin du programme
  Else
    Debug "Impossible d'allouer la mémoire demandée !"
  EndIf 

Exemple

  Texte.s = "Salut !!!"

  *mem = AllocateMemory(StringByteLength(Texte) + SizeOf(CHARACTER))
  CopyMemory(@Texte, *mem, StringByteLength(Texte) + SizeOf(CHARACTER))
  Debug MemorySize(*mem)
  Debug PeekS(*mem)
  FreeMemory(*mem)

Voir aussi

ReAllocateMemory(), FreeMemory(), MemorySize()

OS Supportés

Tous

Memory Index - AllocateStructure() ->