分段故障时:段故障时调用的Update_Multiplier和gdb调试器示出了这些调用函数
计划接收信号SIGSEGV,分割故障。 0x080b74e8在Update_Multiplier()()
double upperbound = 116325;
double objective = 1.1707e+07;
int main()
{
Update_Multiplier();
}
void Update_Multiplier()
{
cout << "function 0" << endl;
// Determine subgradient vectors
double gra[1000][1000];
double grb[1000][1000];
double dumX = 0;
double stepsize[1000][1000];
double tuning=2;
double LRADum[1000][1000];
double LRBDum[1000][1000];
cout << "function 1" << endl;
// update subgradient vectors
for (int i=1; i<=noOfNodes; i++)
{
for (int j=1; j<=noOfNodes; j++)
{
if (C[i][j] != 0)
{
dumX=0;
for (int p=1; p<=noOfCommodity; p++)
{
dumX += X[i][j][p];
}
gra[i][j]=dumX-U[i][j]*Y[i][j]-Q[i][j];
grb[i][j]=Q[i][j]-B[i][j]*Y[i][j];
}
}
}
// update stepsize
cout << "function 2" << endl;
for (int i=1; i<=noOfNodes; i++)
{
for (int j=1; j<=noOfNodes; j++)
{
if (C[i][j] != 0)
{
stepsize[i][j]=(tuning*(UpperBound-Objective))/sqrt((gra[i][j]*gra[i][j])*(grb[i][j]*grb[i][j]));
LRADum[i][j]=LRA[i][j]+stepsize[i][j]*gra[i][j];
LRA[i][j]=LRADum[i][j];
LRBDum[i][j]=LRB[i][j]+stepsize[i][j]*grb[i][j];
LRB[i][j]=LRBDum[i][j];
}
}
}
}
嗯,可能需要40MB的堆栈空间。什么是平台,你知道有多少内存被分配给堆栈? – 2010-01-22 14:53:08
我认为他正在编程其中一台具有256位处理器的计算机,其他人都不知道〜200TB的RAM。 – pyon 2010-01-22 15:00:58
说实话,它甚至会出现段错误,这真是令人惊讶。我看不到cout,endl,noOfNodes,C,noOfCommodity,X,U,Y,Q,B,UpperBound的声明, ,'Objective','sqrt','LRA','LRB'。另外,从'main'调用的范围内没有Update_Multiplier的声明。 – 2010-01-22 15:04:47