Le problème est le suivant:
Supposons qu'au début, il n'y ait rien à la fin de la mémoire. Représentons-le par:
...000000000000000000000000000000000000000
Puis, lors du lancement de l'installateur (I) du TSR, AMS fait un
HeapMoveHigh de l'installateur. (
HeapMoveHigh déplace un bloc en fin de mémoire, comme s'il était alloué avec
HeapAllocHigh dès le début.)
...00000000000000000000000000IIIIIIIIIIIII
L'installateur installe la partie résidente (R) du TSR.
...00000000000000000RRRRRRRRRIIIIIIIIIIIII
L'installateur peut-être déplacé quand l'exécution est terminé, la partie résidente non (car elle est lockée, et elle doit l'être pour que le TSR fonctionne). On se retrouve donc avec une mémoire de type:
...00000000000000000RRRRRRRRR0000000000000
trou-------------------------------^
Ce qui suit la partie "R" est un "trou" ou seuls les blocs suffisamment petits peuvent rentrer.
[edit]Edité par Kevin Kofler le 02-08-2001 à 21:45:27[/edit]