博客首页 | 排行榜 |

LabVIEW007的博客

个人档案
博文分类
如何在CVI里释放DLL函数开辟的内存?  2007-12-07 13:25
问题: 下面是一个总结。 在CVI里,您调用DLL的一个开辟内存的函数,它返回一个指向这段内存空间的指针。 CVI然后调用free函数来这段内存。这是否可行?

这有两种可能情况:
  1. 如果这个DLL是用CVI创建的,那么开辟的内存可以由CVI来释放,这个没有一点问题。
  2. 如果这个DLL是由外部编译器,您必须使用外部编译器的内存管理方法(比如他们的malloc函数)他们的malloc函数返回的指针是不能被CVI版本的free函数来调用的。必须调用这个外部编译器的free函数。

    解答: 两种方法:
    1. 在进行动态内存分配的时候,只使用CVI来创建DLL,是用CVI版本的mallocfree
    2. 在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开辟的任何内存。
类别:VI knowleageBase_函数 |
上一篇:在CVI和C++的接口函数中找不到IMAQVIEW3D函数 | 下一篇:DAQ函数库在LabWindows/CVI的函数目录下被禁用
以下网友评论只代表其个人观点,不代表本网站的观点或立场