3

次のような uBLAS マトリックスがあります。

boost::numeric::ublas::matrix<double> mat(50000,50000);

行列に対する一連の計算が完了したら、そのメモリを解放します。

docsmat.clear()によると、「マトリックスをクリアする」ものを使用しています。しかし、私のプログラムはメモリ不足を続けています。

ヘッダーを掘り下げると、次のことがわかります。

void clear () {
  std::fill (data ().begin (), data ().end (), value_type/*zero*/());
}

したがって、 には明確なセマンティクスの問題がありclear()ます。

問題は、メモリが確実に解放されるようにするにはどうすればよいかということです。

4

1 に答える 1

0

メモリを返す洗練されていない方法は、行列のサイズを変更することです。

mat.resize(0,0,false);  

サイズ値にゼロを自分で使用しようとしたことはありませんが...

于 2013-09-08T19:57:28.403 に答える