3

我有一个 uBLAS 矩阵,如下所示:

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

一旦我完成了对矩阵的一组计算,我希望释放它的内存。

mat.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 回答