ALLOCMEM |
Allocation de mémoire |
Turbo C++ |
dos.h |
Syntaxe
int allocmem(unsigned size, unsigned *segp);
|
Paramètres
Nom |
Description |
size |
Ce paramètre spécifie la taille de la mémoire à allouer, en unités de 16 octets (ou selon l'unité du système). |
segp |
Ce paramètre est un pointeur vers une variable recevant l'adresse du segment alloué. Après l'exécution de la fonction, cette variable contiendra le numéro du segment mémoire alloué, pouvant être utilisé pour accéder à la mémoire. |
Description
Cette fonction permet d'effectuer de l'allocation de mémoire sur le tas du système d'exploitation DOS.
Remarques
- allocmem utilise l'appel système DOS 0x48 pour allouer un bloc de mémoire libre et renvoie l'adresse du segment
du bloc alloué.
- size correspond à la taille souhaitée en paragraphes (un paragraphe fait 16 octets). segp est un pointeur vers un mot auquel sera assignée l'adresse du
segment du bloc nouvellement alloué. Aucune affectation n'est effectuée sur le mot pointé par segp si l'espace disponible est insuffisant.
- Tous les blocs alloués sont alignés sur les paragraphes.
- allocmem et malloc ne peuvent pas coexister.
- Valeur de retour : allocmem renvoie -1 en cas de succès. En cas d'erreur, un nombre (la taille en paragraphes du plus grand bloc disponible) est renvoyé.
- Un retour d'erreur d'allocmem définit la variable globale _doserrno et la variable globale errno à :
Nom |
Description |
ENOMEM |
Mémoire insuffisante |
- Portabilité : allocmem est une exclusivité DOS.
Exemple
- #include <dos.h>
- #include <alloc.h>
- #include <stdio.h>
-
- int main (void) {
- unsigned int size, segp;
- int stat;
-
- size= 64; /* (64 x 16) = 1024 octets */
- stat= allocmem(size, &segp);
- if (stat == -1) printf("Mémoire allouée au segment :%x\n 11 , segp) ;
- else printf("Échec : le nombre maximum de paragraphes disponibles est %u\n", stat);
- return 0;
- }
Voir également
coreleft, freemem, malloc, setblock.
Dernière mise à jour : Dimanche, le 28 Février 2021