void CMySDOpenGLDoc::GenerateCenter()
{
vector<double> x;
vector<double> y;
vector<double> z;
double dx;
dx = 10/indat.mx;
int n = 0;
for (int k=0;k<indat.mz;k++)
{
for (int j=0;j<indat.my;j++)
{
for (int i=0;i<indat.mx;i++)
{
x.push_back(dx/2+dx*i);
n++;
}
}
}
n = 0;
for (int k=0;k<indat.mz;k++)
{
for (int j=0;j<indat.my;j++)
{
for (int i=0;i<indat.mx;i++)
{
y.push_back(dx/2+dx*j);
n++;
}
}
}
n = 0;
for (int k=0;k<indat.mz;k++)
{
for (int j=0;j<indat.my;j++)
{
for (int i=0;i<indat.mx;i++)
{
z.push_back(dx/2+dx*k);
n++;
}
}
}
for (int i=0;i<indat.ntotal;i++)
{
Centerpoint cpoint;
cpoint.Setcoordx(x[i]);
cpoint.Setcoordy(y[i]);
cpoint.Setcoordz(z[i]);
indat.cpointarray.Add(cpoint);
//indat.cpointarray[i].Setcoordx(x[i]);
//indat.cpointarray[i].Setcoordy(y[i]);
//indat.cpointarray[i].Setcoordz(z[i]);
}
}
感觉是这段代码的问题,x,y,z容器比较大,大约几百万,但是个人觉的几百万个数也就是十几,几十兆而已不会导致内存不足啊,不知各位大神有何高见
------解决思路----------------------
跟栈没有关系,在于楼主应该是把内存脆片化了
lz试试这样
vector<double> x(indat.mz);
vector<double> y(indat.mz));
vector<double> z(indat.mz));
。。。。。。。。。。
------解决思路----------------------
先 做 x , 再加 y, 再加 z , 看哪里 出错。