2017-01-17 6 views
0

私は、ガウス混合モデル(GMM)を訓練するためにVLFeatを使用している、と私は、次のコマンドが使用されている手動で空きメモリ必要がある場合、私はわからない:私は手動でコードを書くこと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++はそう、すべてのメモリ割り当てごみ収集の言語ではありません/メモリを解放するにはvl_free()を使用してください。私の推測では、メモリを解放するためには、メモリを解放する必要があります。実装はちょうどfree()または他の関数をラップするかもしれませんが、通常このようなlibsの場合、lib関数を使用してlibから返されたメモリを管理する必要があります。

vl_free()のドキュメント:この関数は、vl_malloc、vl_calloc、またはvl_reallocによって割り当てられたメモリブロックを解放します。概要は、POSIXのmalloc関数と同じです。

+0

ありがとうございました。しかし、関数 'vl_gmm_get_means(gmm);'はどのように実装されているのかよく分かりません。なぜなら、それはビルドイン関数であり、ソースコードは使用できないからです...しかし、まだ安全のために何も 'vl_free'を試みることができます。 。 – Lotayou

関連する問題