0

我正在使用 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);

谢谢!

4

1 回答 1

0

不知道您所说的“让 Visual Studio 完成它的工作”是什么意思......

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

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

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

于 2017-01-17T04:23:39.583 回答