3
그래서처럼 uBLAS 행렬을 가지고 : 나는 행렬에 계산의 세트로 끝났어요 일단uBLAS 매트릭스 명확 메모리
boost::numeric::ublas::matrix<double> mat(50000,50000);
, 나는 메모리가 해제합니다.
저는 docs에 따라 mat.clear()
을 사용하여 "매트릭스를 지 웁니다". 그러나 내 프로그램은 계속 메모리가 부족합니다.
헤더에 파고,이 찾을 :
void clear() {
std::fill (data().begin(), data().end(), value_type/*zero*/());
}
그래서
clear()
와 명확한 의미의 문제가있다.
그렇다면 메모리가 해제되었는지 어떻게 확인해야합니까?
당신이 일어날 수행을 해결책을 발견하기 위해 문제에? – k1next
이 문제에 대한 해결책을 찾았습니까? 나는 그에게 똑같은 문제에 부딪치고있는 것처럼 보인다. 문제를 효과적으로 처리하려면 행렬의 크기를 (0,0)으로 조정해야합니다. 나는 그것을 할 수있는 "올바른"방법이 있는지 궁금 해서요. – Devil
@Devil,하지만 메모리를 해제하도록 크기가 조정되고 있습니까? 예를 들어,'std :: vector'를 사용하면, 벡터가 나중에 다시 확장 될 수 있고 할당이 비싸기 때문에 resize는 그러한 보장을하지 않습니다. 대신 C++ 11의'shrink_to_fit()'함수를 사용해야합니다. 나는이 문제에 대한 적절한 해결책을 찾지 못했고 결국에는 std :: vector의 vector로 바꿨다. 왜냐하면 나는 주로 uBLAS를 편리한 2d 행렬로 사용하기를 원했기 때문이다. – Richard