Domanda

sto mettendo in produzione un codice RPGLE che utilizza %alloc e dealloc per allocare la memoria. I programmatori dovrebbero essere in grado di garantire non c'è sono conseguente perdite di memoria, ma sono preoccupato per quello che succede se non lo fanno.

La mia domanda è: se i programmatori pasticcio e ci sono perdite di memoria poi, quando sarà questa memoria essere recuperato? E 'quando il programma lascia memoria o quando il lavoro finisce?

È stato utile?

Soluzione

Dalla Guida di riferimento ILE RPG Programmer:

  

Lo storage è implicitamente liberato quando il   gruppo di attivazione termina. Impostazione LR su   non libererà l'eventuale archiviazione mucchio   allocare al modulo, ma qualsiasi   puntatori a stoccaggio mucchio andranno perse.

Se il programma RPG è nel suo gruppo di attivazione, quindi la memoria verrà liberata quando il programma termina. Naturalmente, quando il processo termina, lo fa in modo che il gruppo di attivazione. Così termina il lavoro sarà sempre pulire qualsiasi memoria allocata.

Altri suggerimenti

Sembra che si sta avvicinando RPG da un C / C ++ sfondo. Sono stato di programmazione in RPG per circa 8 anni e solo una manciata di volte mai dovuto usare l'alloc% () BIF.

Detto questo, se si utilizza un nuovo gruppo di attivazione, si dovrebbe andare bene. Se si utilizza un gruppo di attivazione di nome e non si utilizza il comando RCLACTGRP o si utilizza il gruppo di attivazione di default si potrebbe incorrere in problemi.

In effetti, è necessario studiare il meccanismo di gruppi di attivazione. Le perdite di memoria possono accadere, ma non faranno alcun danno alla macchina (io amo AS400). Ma si può danneggiare gli altri programmi all'interno del vostro lavoro iSeries (osservazione: se non siete da un background AS400, è necessario leggere il meccanismo di lavoro AS400).

Se si inizia con la gestione delle activationgroups all'interno del vostro lavoro da soli (nel programma che è naturalmente), è possibile creare separata, sorta di area di memoria. Si richiede un certo overhead (è necessario nominare i gruppi), ma poi si dispone di un ambiente sicuro in cui è possibile potente roba.

Non ho familiarità con quelle built-in-funzioni, ma normalmente tutto è ripulito quando il lavoro finisce (o disconnessione dell'utente se interattivo). Se non è possibile trovare una risposta, posso puntare a un'altra comunità erano la risposta può essere conosciuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top