【发布时间】:2015-11-15 07:20:18
【问题描述】:
如果你能帮助我,真的很感谢!下面是我对数字向量(双精度型)进行排序的代码。 vec中的元素个数是200,000。
程序在几秒钟后停在绿线处。错误信息是
“线程 1:EXC_BAD_ACCESS(代码 = 2,地址=0x7fff5f3fffd8)”。
就像图片一样:
/*This is block to call quickSort*/
void VectorDoubleSort:: sort(std::vector<double>& vec){
int start = 0;
int end = vec.size() - 1;
quickSort(vec, start, end);
}
/*This block to fulfill the quickSort method*/
void VectorDoubleSort:: quickSort(std::vector<double>& vec, int start, int end)
{
int pivot = (start + end) / 2;
int smallIndex = start;
if (start < end) {
double tempA = vec[start];
vec[pivot] = tempA;
for (int i = start + 1; i <= end; i++) {
if (vec[i] <= vec[start]) {
smallIndex += 1;
double tempB = vec[i];
vec[i] = vec[smallIndex];
vec[smallIndex] = tempB;
}
}
double tempC = vec[start];
vec[start] = vec[smallIndex];
vec[smallIndex] = tempC;
pivot = smallIndex;
quickSort(vec, start, pivot - 1);
quickSort(vec, pivot + 1, end);
}
}
【问题讨论】:
-
不能正常工作是什么意思?在问题中提供信息,而不是期望我们从图片中收集信息。
-
进程停止在绿线,我找不到原因。真的很郁闷。
-
通常您应该在问题中包含文本错误消息,而不是显示屏幕截图。
-
错误信息是“线程 1:EXC_BAD_ACCESS (code = 2, address=0x7fff5f3fffd8)”。程序停在绿线处。
-
@WBLee 使用Insturments中的Zombie工具找出问题的原因,更多细节:stackoverflow.com/a/11717981/2128327
标签: c++ algorithm sorting debugging quicksort