Larvation :
Je ne crois pas qu'UDMH apporte beaucoup sur les Palm modernes. Je pense que la part de la RAM utilisée pour le cache des bases de données est presque toujours plein, donc qu'il n'y a rien à gagner en plus de la dynamic heap réservée. Au cas où le cache n'est pas plein, la part à gagner est modérée... Cela reste donc à vérifier...
Stipus :
CITATION
Donc un programme correctement écrit ne devrait pas planter si le tas est trop petit.
Non, il ne plante pas, il affiche un message "Out of Memory" en cas d'échec de l'allocation mémoire ou assimilé, et retour au launcher. C'est ce qui se passe avec des jeux ou des émulateurs gourmand en mémoire...
Le vrai risque avec UDMH est le suivant :
Imaginons un programme (caricatural, mais bon) avec un bug de type "buffer overflow" :
CODE
char * gnarkouze = NULL;
gnarkouze = (char *) MemPtrNew (sizeof(char) * 4096);
if (!gnarkouze) myErrorHandler();
MemSet(gnarkouze, sizeof(char) * 5096, 0);
Ici, on alloue un bloc de 4096 octets, mais on écrit 5096 octets de 0 dedans. Les 1000 octets qui suivent, en mémoire seront eux aussi remis à 0. Problème : ils ne nous appartiennent pas!
Si le bloc
gnarkouze a été alloué en dynamic heap, on corrompt l'espace de travail de notre propre programme ou d'un autre programme ayant alloué des données. Dans le meilleur des cas, ou modifie de l'espace non alloué. Au pire on remet à zéro une variable stratégique qui conduit a un plantage. Un soft reset, et c'est oublié.
Si le bloc
gnarkouze a été alloué en "storage heap" (parce que UDMH a été installé), il se peut très bien que les 1000 octets qui suivent appartiennent à un programme, à une base de données, à une bibliothèque système, et là, y beaucoup plus de risques de casse, qu'un soft-reset ne réparera pas.
("Coin de la culture" : Dans tous les systèmes d'exploitation moderne, ce problème ne se pose pas - un programme qui tente d'écrire dans une zone mémoire qui ne lui a pas été allouée est arrêté par le système. C'est le "segmentation fault" des unix ou le "Programme a tenté d'écrire à l'adresse ..." de windows).
Conclusion : UDMH+programme instable ou mal écrit = Plus de risques de plantages sévères qu'un soft-reset ne réparera pas.