2017-01-17 83 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

相關問題