Question

Je suis mise en production du code de RPGLE qui utilise %alloc et dealloc pour allouer de la mémoire. Les programmeurs devraient pouvoir assurer qu'il n'y a pas de fuites résultant de la mémoire, mais je suis inquiet de ce qui se passe si elles ne le font pas.

Ma question est: si les programmeurs désordre et il sont fuites de mémoire alors quand sera cette mémoire sera récupérée? Est-il lorsque le programme quitte la mémoire ou lorsque le travail est terminé?

Était-ce utile?

La solution

De l'ILE Guide de référence du RPG programmeur:

  

Le stockage est implicitement libéré lorsque le   groupe d'activation se termine. Réglage LR sur   ne libère pas tout stockage tas   alloué par le module, mais toute   pointeurs vers le stockage en tas seront perdues.

Si votre programme RPG est dans son propre groupe d'activation, la mémoire sera libérée lorsque le programme se termine. Bien sûr, quand la fin de votre travail, donc votre groupe d'activation. Donc, mettre fin à la tâche toujours nettoyer la mémoire allouée.

Autres conseils

On dirait que vous approchez d'un RPG C / C ++ fond. J'ai été la programmation en RPG depuis environ 8 ans maintenant et seulement une poignée de fois jamais eu à utiliser le% alloc () BIF.

Cela étant dit, si vous utilisez un nouveau groupe d'activation, vous devriez être bien. Si vous utilisez un groupe d'activation nommé et vous ne pas la commande de RCLACTGRP ou si vous utilisez le groupe d'activation par défaut, vous pouvez rencontrer des problèmes.

En effet, il faut étudier le mécanisme des groupes d'activation. Des fuites de mémoire peuvent se produire, mais ne fera pas de dégâts à la machine (j'aime le AS400). Mais vous pouvez nuire aux autres programmes dans votre travail iSeries (remarque: si vous n'êtes pas d'un arrière-plan AS400, vous devez lire sur le mécanisme d'emploi AS400).

Si vous commencez à gérer les activationgroups au sein de votre travail vous-même (dans le programme qui est ofcourse), vous pouvez créer séparée, une sorte de zone de mémoire de. Il exige que certains frais généraux (vous devez nommer les groupes), mais alors vous avez un environnement sûr où vous pouvez Powerfüll des choses.

Je ne suis pas familier avec ceux intégrés-fonctions, mais normalement tout est nettoyé lorsque les extrémités d'emploi (ou l'utilisateur se déconnecte de manière interactive). Si vous ne pouvez pas trouver une réponse, je peux vous indiquer une autre communauté était votre réponse est peut-être connu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top