我投产其使用%allocdealloc分配内存一些RPGLE代码。程序员应该能够确保没有造成内存泄漏,但我很担心,如果他们不这样做会发生什么。

我的问题是:如果程序员陷入困境,有的内存泄漏,然后当将这种记忆被回收?它是程序内存离开时或当作业结束?

有帮助吗?

解决方案

从ILE RPG程序员参考指南:

  

存储被隐式地释放在   激活组结束。上设置LR   不会释放任何堆存储   通过模块分配,但任何   指针堆存储将丢失。

如果您的RPG程序是在它自己的激活组,则存储器将在程序结束时释放。当然,当你的工作结束,这样做你的激活组。所以结束作业会经常清理分配的任何内存。

其他提示

听起来好像是从C / C ++背景接近RPG。我一直在RPG编程现在约8年,只有时间屈指可数曾经使用ALLOC%()BIF。

这就是说,如果使用的是一个新的激活组,你应该罚款。如果您使用的是命名激活组,你不发出RCLACTGRP命令,或者你使用的是默认激活组你可能会遇到的问题。

事实上,你必须学习激活组机制。内存泄漏可能发生,但不会做的机器(我爱AS400)的任何损害。但是,你可能会损害您的iSeries作业中的其他程序(注:如果您从AS400背景都没有,你必须阅读有关AS400工作机制)。

如果您对自己管理自己的工作中开始将ActivationGroups(在是ofcourse程序),您可以创建单独的,排序内存区的。它需要一定的开销(您必须命名组),但是你有一个安全的环境,在那里你可以强大的东西。

我不熟悉这些内置的功能,但的正常的一切都清理当作业结束(如果交互式或用户注销)。如果你不能找到答案,我可以指出你到另一个社区是你的答案可能是已知的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top