문제

나는 사용하는 rpgle 코드를 제작하고 있습니다 %alloc 그리고 dealloc 메모리를 할당합니다. 프로그래머는 결과적인 메모리 누출이 없도록 할 수 있어야하지만 그렇지 않으면 어떻게되는지 걱정됩니다.

내 질문은 : 프로그래머가 엉망이된다면 ~이다 메모리 누출은 언제이 메모리가 재생됩니까? 프로그램이 메모리를 떠날 때 또는 작업이 완료 될 때입니까?

도움이 되었습니까?

해결책

Ile RPG 프로그래머의 참조 안내서 :

활성화 그룹이 종료되면 스토리지가 암시 적으로 자유롭게 해제됩니다. LR을 설정하면 모듈에 의해 할당 된 힙 스토리지가 제거되지 않지만 힙 스토리지에 대한 포인터가 손실됩니다.

RPG 프로그램이 자체 활성화 그룹에 있으면 프로그램이 종료되면 메모리가 해제됩니다. 물론 작업이 끝나면 활성화 그룹도 마찬가지입니다. 따라서 작업을 끝내면 항상 할당 된 메모리를 정리할 수 있습니다.

다른 팁

C/C ++ 배경에서 RPG에 접근하는 것처럼 들립니다. 나는 약 8 년 동안 RPG로 프로그래밍 해 왔으며 몇 번만 %Alloc () BIF를 사용해야했습니다.

즉, 새로운 활성화 그룹을 사용하고 있다면 괜찮을 것입니다. 명명 된 활성화 그룹을 사용하고 있고 RCLACTGRP 명령을 발행하지 않거나 기본 활성화 그룹을 사용하는 경우 문제를 해결할 수 있습니다.

실제로, 당신은 활성화 그룹의 메커니즘을 연구해야합니다. 메모리 누출이 발생할 수 있지만 기계에 손상을 입지 않습니다 (AS400을 좋아합니다). 그러나 Iseries 직무 내 다른 프로그램에 해를 끼칠 수 있습니다 (비고 : AS400 배경이 아닌 경우 AS400 작업 메커니즘에 대해 읽어야합니다).

직무 내에서 ActivationGroup을 직접 관리하는 것으로 시작하면 (물론 프로그램에서) 별도의 메모리 영역을 만들 수 있습니다. 약간의 오버 헤드가 필요하지만 (그룹의 이름을 지정해야 함) 강력한 물건을 할 수있는 안전한 환경이 있습니다.

나는 그 내장 기능에 익숙하지 않지만 보통 작업이 종료되면 모든 것이 정리됩니다 (또는 인터랙티브 인 경우 사용자 로그 오프). 답을 찾을 수 없다면, 다른 커뮤니티를 지적 할 수 있습니다. 귀하의 답변이 알려져있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top