labview while循环中的获取队列(Obtain Queue)导致内存泄漏
时间:10-02
整理:3721RD
点击:
问题:
我程序的 While 循环中有一个获取队列的函数。queue name 的输入没有改变,输入 create if not found 设置为真。因为 create if not found 设置为真,因此新的队列不应该被建立。为什么我的内存一直在增长?
解答:
您每次调用获取队列函数时都会建立一个队列的引用,该引用占用 4 字节内存。每次您调用获取队列函数之后,无论队列是否存在,另一个引用都会被建立,即占用 4 字节内存。在您获取队列的引用并将一些信息压入队列之后,您应当使用释放队列函数。调用释放队列不会丢弃您的队列,它将释放一个并且只释放一个队列的引用。队列将继续存在直到所有的引用被释放。
在您进入您的循环之前调用获取队列函数并且在循环中重复调用将保证您的队列存在至少一个引用。您可以在您的 while 循环之外使用获取队列的调用并将 queue out 引用传递到您的 while 循环之内。
我程序的 While 循环中有一个获取队列的函数。queue name 的输入没有改变,输入 create if not found 设置为真。因为 create if not found 设置为真,因此新的队列不应该被建立。为什么我的内存一直在增长?
解答:
您每次调用获取队列函数时都会建立一个队列的引用,该引用占用 4 字节内存。每次您调用获取队列函数之后,无论队列是否存在,另一个引用都会被建立,即占用 4 字节内存。在您获取队列的引用并将一些信息压入队列之后,您应当使用释放队列函数。调用释放队列不会丢弃您的队列,它将释放一个并且只释放一个队列的引用。队列将继续存在直到所有的引用被释放。
在您进入您的循环之前调用获取队列函数并且在循环中重复调用将保证您的队列存在至少一个引用。您可以在您的 while 循环之外使用获取队列的调用并将 queue out 引用传递到您的 while 循环之内。
说的很正确,小编果然是高手
下来看看。谢谢小编
下来看看。谢谢小编