m93*_*93a 1 c++ arrays object segmentation-fault
我有两个类:Vector和Particle ......
class Vector {
public:
float x,y;
};
class Particle {
public:
Vector* coord;
Particle(Vector* coord)
{
this->coord = coord;
};
};
Run Code Online (Sandbox Code Playgroud)
...和一个像这样声明的数组:
Particle* particles [PARTICLES];
Run Code Online (Sandbox Code Playgroud)
这是我的主要内容:
int main(int argc, char** argv)
{
//Write
int i = 0;
do{
particles[i] = new Particle(new Vector());
}while(
++i<PARTICLES
);
i = 0;
//Read
int j = 0;
float s = .0f,
a = .0f;
Vector vi = *(particles[0]->coord),
vj = *(particles[0]->coord);
do{
do{
if(i!=j){
vi = *(particles[i]->coord);
vj = *(particles[j]->coord); //FIXME
}
}while(
++j<PARTICLES //For values >1 throws SIGSEGV
);
}while(
++i<PARTICLES
);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
每当粒子> 1时抛出SIGSEGV.评论说FIXME系列可以正常工作而不会出错.
完整代码:http://codepad.org/dI2ve5Pc
为什么它会失败并且有办法解决它?
谢谢 :)
循环写错了.j
在内循环的第二次迭代之前不复位.为什么不像大多数人通常那样对循环进行编码:
for (i = 0; i < PARTICLES; i++) {
for (j = 0; j < PARTICLES; j++) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)