【发布时间】:2016-03-18 09:25:11
【问题描述】:
我想知道创建稀疏矩阵后是否需要释放locations 和values 对象占用的内存。代码如下:
void load_data(umat &locations, vec& values){
// fill up locations and values
}
int main(int argc, char**argv){
umat loc;
vec val;
load_data(loc,val);
sp_mat X(loc,val);
return 0;
}
在上面的代码中,load_data() 填充了locations 和values 对象,然后在main() 中创建了稀疏矩阵。我的问题:在构造X 之后,我是否需要释放位置和值使用的内存?原因是X 可能很大,而我的内存不足。我知道当 main 返回时,操作系统将释放 locations 和 values 以及 X。但是,真正的问题是X 占用的内存是否与locations 和values 或X 占用的内存相同,在这种情况下我需要释放locations 和values。
【问题讨论】:
-
它应该写在 lib 的文档中。如果没有,1。在 load_data 之前放置一个断点,检查可执行文件使用的内存大小。 2.加载相当大的数据,发现内存大小变化。 3.运行sp_mat这一行,看看内存增加率是否接近secon step。如果相同就删除,否则不要。但是,我相信有更好的方法来检查它:)
-
你为什么不看看 SpMat 类的犰狳源代码?
include/armadillo_bits/SpMat_meat.hpp
标签: c++ memory-management armadillo