我有一个uBLAS矩阵,如下所示:
boost::numeric::ublas::matrix<double> mat(50000,50000);
一旦我完成了对矩阵的一组计算,我希望释放它的内存。
我一直在使用mat.clear()
,根据docs,“清除矩阵”。但是我的程序内存不足。
挖掘标题,我发现:
void clear () {
std::fill (data ().begin (), data ().end (), value_type/*zero*/());
}
因此clear()
存在明确的语义问题。
那么问题是,如何确保释放内存?
答案 0 :(得分:0)
返回内存的一种不优雅的方法是调整矩阵的大小:
mat.resize(0,0,false);
虽然我自己没有尝试使用零作为尺寸值...