读书人

栈溢出解决方案

发布时间: 2012-07-27 11:03:00 作者: rapoo

栈溢出
我写了一个求矩阵协方差的代码,但是报错栈溢出,这是为什么?在怎么修改呢?
void mypca::cov()
{
for (unsigned int i=0;i<vec2[0].size();i++)
{
vector<double>ci;
for (unsigned int j=0;j<(vec2[0].size());j++)
{
double cij=0.0;
for(unsigned int k=0;k<vec2.size();k++)
{

cij+=(vec2[k][i]*vec2[k][j]);

}
ci.push_back(cij);

}
C2.push_back(ci);
}
}

[解决办法]
矩阵难道很大?

是在不行,就用new或者malloc做动态数内存分配吧
[解决办法]
据说 栈大小是2M 吗
[解决办法]

探讨

矩阵是256*1024的

[解决办法]
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。

[解决办法]
探讨

一开始时候,矩阵的定义是:vector<vector<float>> vec2;
如果用new方法的话,是不是改成这样子:vector<vector<float>> vec2=new vector<vector<float>> (256);

读书人网 >C++

热点推荐