gpt4 book ai didi

c++ - 段错误 chkstk_ms C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:45:49 29 4
gpt4 key购买 nike

我需要以下计数排序实现方面的帮助。是因为 x 的值太大了吗?我遇到段错误。这是 gdb 所说的:

Program received signal SIGSEGV, Segmentation fault.
___chkstk_ms () at /usr/src/debug/gcc-5.4.0- 1/libgcc/config/i386/cygwin.S:146
146 /usr/src/debug/gcc-5.4.0-1/libgcc/config/i386/cygwin.S: No such file or directory.

这是代码片段,

void radix_sort::sort_array(int array[], int n)
{
int arrayB[n];

auto k = *std::max_element(&array[0], &array[n - 1]);
auto m = *std::min_element(&array[0], &array[n - 1]);

long int x = k - m + 1;
int arrayC[x];

for (auto i = 0; i < n; i++)
arrayC[array[i] - m]++;

for (long int i = 1; i < x; i++)
arrayC[i] = arrayC[i] + arrayC[i - 1];

for (auto i = n - 1; i >= 0; i--)
{
arrayB[arrayC[array[i] - m] - 1] = array[i];
arrayC[array[i] - m]--;
}

for (int i = 0; i < n; i++)
array[i] = arrayB[i];
}

最佳答案

arrayC[array[i] - m]++;

此时在代码中没有分配arrayC 的元素,因此递增了一个未知数。这可能会爆炸

arrayB[arrayC[array[i] - m] - 1] = array[i];

几行之后,因为 arrayC[array[i] - m] 可能为负数或几十亿,超出我们所知的范围。

关于c++ - 段错误 chkstk_ms C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842681/

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