gpt4 book ai didi

c++ - 为什么会出现段错误?

转载 作者:行者123 更新时间:2023-11-30 01:00:31 25 4
gpt4 key购买 nike

如果我将大于 100 的值作为 BinaryInsertionSort 的第二个参数传递,则会出现段错误。

int
BinarySearch (int a[], int low, int high, int key)
{
int mid;

if (low == high)
return low;

mid = low + ((high - low) / 2);

if (key > a[mid])
return BinarySearch (a, mid + 1, high, key);
else if (key < a[mid])
return BinarySearch (a, low, mid, key);

return mid;
}

void
BinaryInsertionSort (int a[], int n)
{
int ins, i, j;
int tmp;

for (i = 1; i < n; i++) {
ins = BinarySearch (a, 0, i, a[i]);
if (ins < i) {
tmp = a[i];
memmove (a + ins + 1, a + ins, sizeof (int) * (i - ins));
a[ins] = tmp;
}
}
}

最佳答案

您正在传递一个数组 a[]。它必须足够大,使值 hi 和 low 在范围内。

例如,如果您传递一个大小为 1 的数组,并且 low = 0.hi = 2,则 mid = 1 将超出范围(大小为 1 的数组只能解引用 a[0], a[1] 将超出范围)。

关于c++ - 为什么会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com