当前位置: 代码迷 >> VC/MFC >> 帖,为何运行时提示内存不足,各位大神帮忙看下
  详细解决方案

帖,为何运行时提示内存不足,各位大神帮忙看下

热度:184   发布时间:2016-05-02 03:22:41.0
求助帖,为何运行时提示内存不足,各位大神帮忙看下
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 , 看哪里 出错。