Le but d'un allocateur est de minimiser l'espace mémoire
gaspillé sans augmenter le coût en temps de la gestion mémoire.
Idéalement, un allocateur va donc perdre un temps minimum en gestion
mémoire et le gaspillage de celle-ci sera minimale.
On considère par
convention qu'un allocateur ne contrôle ni le nombre, ni la taille
des blocs en cours d'utilisation par le programmes
utilisateur (mutateur). De plus, le bloc mémoire choisie afin de satisfaire
une requête est considéré comme inateignable tant que le programme
utilisateur ne l'a pas libéré. Il ne manipule donc que les
blocs mémoires qui sont libres
et les informations d'adresses et de tailles de blocs libres vont
être gérées par des structures de données pouvant être des arbres,
des listes chaînées, ....
Un des problèmes majeurs auquel doit faire face un allocateur est la minimisation de la fragmentation mémoire.