如何在CVI里释放DLL函数开辟的内存?
主要软件: LabWindows/CVI Development Systems>>LabWindows/CVI Full Development System
主要软件版本: 7.0
主要软件修正版本: N/A
次要软件: N/A
问题: 下面是一个总结。 在CVI里,您调用DLL的一个开辟内存的函数,它返回一个指向这段内存空间的指针。 CVI然后调用
free
函数来回收这段内存。这是否可行?
这有两种可能情况:
- 如果这个DLL是用CVI创建的,那么开辟的内存可以由CVI来释放,这个没有一点问题。
- 如果这个DLL是由外部编译器,您必须使用外部编译器的内存管理方法(比如他们的
malloc
函数)他们的malloc
函数返回的指针是不能被CVI版本的free
函数来调用的。必须调用这个外部编译器的free
函数。
解答: 两种方法:
- 在进行动态内存分配的时候,只使用CVI来创建DLL,是用CVI版本的
malloc
和free
。
- 在DLL里创建另外一个"free"函数,由它来调用外部编译器的
free
函数来释放内存。 比如:
void my_free(void *ptr)
{
free(ptr); // this call to free is to the external compiler's free function.
}
my_free
可以在CVI中调用来释放DLL开辟的任何内存。
相关链接:
附件:
报告日期: 07/31/2006
最近更新: 07/31/2006
文档编号: 0Q075QZL
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.