Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME III. Les librairies utilitaires

5. Le groupe s_strs

5.9 SCR_palloca (file s_allc.c:505)

Syntax

char *SCR_palloca(len, a)
unsigned int len, a;

Description

Cette fonction alloue des buffers successifs de 3K. A chaque appel, elle consomme une partie du dernier buffer alloué et retourne l'adresse du premier byte disponible dans ce buffer. Il ne s'agit donc pas d'une allocation au sens commun du terme. Lorsque le dernier buffer est plein ou ne suffit plus pour la nouvelle allocation demandée, un nouveau buffer est alloué.

L'intérêt de cette fonction réside dans le fait qu'elle évite le morcellement de la mémoire et la perte de 8 bytes concédée normalement pour chaque allocation par malloc() ou SCR_malloc(). Elle est notamment utilisée pour charger en mémoire les objets compilés dans un fichier .scr.

Son inconvénient est qu'elle ne permet pas de libérer l'espace alloué.

Pour éviter les problèmes d'alignement, chaque pointeur retourné est aligné sur a bytes. Pour des textes, a vaut 1. Pour des int par contre, il faut donner à a la valeur

        sizeof(int)

Si l'espace demandé est indisponible, la fonction appelle la fonction SCR_panic() qui par défaut affiche une message d'erreur et quitte le programme avec un code retour 2.

SCR_panic() peut être replacée par une fonction utilisateur.

Exemple

    for(i = 0 ; i < 30 ; i++)
txt[i] = SCR_palloc(81); ---> une seule allocation
au lieu de 30

Voir également

SCR_realloc(), SCR_malloc(), SCR_palloc()

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be