У меня есть матрица uBLAS, вот так:
boost::numeric::ublas::matrix<double> mat(50000,50000);
Как только я закончу с набором вычислений на матрице, я хочу освободить память.
Я использую mat.clear()
который, согласно документы, «очищает матрицу». Но моей программе не хватает памяти.
Копаясь в заголовках, я нахожу это:
void clear () {
std::fill (data ().begin (), data ().end (), value_type/*zero*/());
}
Так что есть четкая проблема семантики с clear()
,
Тогда возникает вопрос: как мне освободить память?
Не элегантный способ вернуть память — изменить размер матрицы:
mat.resize(0,0,false);
Хотя я сам не пробовал использовать ноль для значения размера …
Других решений пока нет …