2017-01-17 112 views
0

我使用VLFeat训练高斯混合模型(GMM),我不知道我是否应该在使用手动释放内存下面的命令:使用vlfeat时,我必须明确释放内存吗?

float *means = (float *) vl_gmm_get_means(gmm); 
float *covariances = (float *) vl_gmm_get_covariances(gmm); 
float *priors = (float *) vl_gmm_get_priors(gmm); 

我必须手工编写代码如下所示?

free(means); 
free(covariances); 
free(priors); 

谢谢!

回答

0

不知道你所说的“让Visual Studio中做的工作”是什么意思?

如果内存分配,它需要被释放。C++是不是垃圾回收的语言,因此所有的内存分配/通过新/删除(或malloc/free)显式地释放分配。

我从来没有使用过这个库(VLFeat),但我使用了它的内存分配函数,我的猜测是你应该使用vl_free()来释放内存实现可能只包装free()或其他函数,但通常对于这样的库,应该使用lib函数来管理从库返回的内存。

vl_free()的文档状态:该函数释放由vl_malloc,vl_calloc或vl_realloc分配的内存块。简介与POSIX malloc功能相同。

+0

谢谢。但是我不确定函数'vl_gmm_get_means(gmm);'是如何实现的,因为它是一个内置函数,并且源代码不是可用的......尽管如此,我仍然可以尝试使用'vl_free'任何东西。 。 – Lotayou

相关问题