使用vlfeat时是否必须明确释放内存?

时间:2017-01-17 03:35:26

标签: visual-c++ memory-management vlfeat gmm

我使用VLFeat训练高斯混合模型(GMM),并且我不确定在使用以下命令时是否应该手动释放内存:

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);

谢谢!

1 个答案:

答案 0 :(得分:0)

不要因为“让Visual Studio完成它的工作”而知道你的意思......

如果分配了内存,则需要释放它。 C ++不是垃圾收集语言,因此所有内存分配/释放都是通过new / delete(或malloc / free)显式的。

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

vl_free()状态的文档:此函数释放由vl_malloc,vl_calloc或vl_realloc分配的内存块。概要与POSIX malloc函数相同。