问题遇到的现象和发生背景
学习c++做一个小项目的过程中,其中的一个排序模块遭遇了程序崩溃的问题,经过排查解决了问题,但是其中原因我无法找到。
问题相关代码
worker *tmp=NULL;
int j,i;
for( i=1;i<this->workernum;i++){
if(this->workerarray[i]->num<this->workerarray[i-1]->num){
tmp=this->workerarray[i];
cout<<this->workerarray[i]->num<<endl;
for( j=i-1;this->workerarray[j]->num>tmp->num &&j>=0 ;j--){
this->workerarray[j+1]=this->workerarray[j];
}
this->workerarray[j+1]=tmp;
}
}
}
可见,只是一个直接插入排序。其中workerarray为类中指针数组,num为类中变量,个人认为关系不大。
运行结果及报错内容
我所发现的错误代码在
for( j=i-1;this->workerarray[j]->num>tmp->num &&j>=0 ;j--)
将其中条件j>=0与this->workerarray[j]->num>tmp->num交换后程序正确
如
for( j=i-1;j>=0&& this->workerarray[j]->num>tmp->num ;j--)
我想要达到的结果
所以,为什么会发生这样的问题,原因是什么,希望大家可以帮助我。