gpt4 book ai didi

c - 运行时检查失败 #2 - 变量 'arr2' 周围的堆栈已损坏

转载 作者:行者123 更新时间:2023-11-30 15:53:09 24 4
gpt4 key购买 nike

int arr2[5]={5,4,3,2,1};
sortArray(arr2, 5);

void sortArray(int data[], int size)
{
int i, j;
int element;

for (i = 1; i < size; i++)
{
element = data[i];
j = i-1;

while (j >= 0 && element < data[j])
{
data[j+1] = data[j];
j--;
}

data[j] = element;
}
}

我的函数收到此错误,当函数结束时我的数组看起来像这样 {5,5,5,5,5},为什么会这样?

最佳答案

如上所述:在 for 循环的第一次迭代期间,执行 while 循环后,j 递减到 -1,然后用作数据数组中的索引;这是堆栈损坏的原因。

有关堆栈损坏的更多信息:当您引用数组的某个索引(IE data[j])时,您基本上是在说“从名为 data 的指针指向的内存位置开始,添加 j * sizeof(int) 字节,并获取该值'。

在代码中,data[j] 相当于*(data + (j * sizeof(int)))。当您给出负值时,您将引用未分配给数据数组的内存;在这种情况下,内存恰好是堆栈的一部分。因为您正在修改它,所以您会收到堆栈损坏错误。

关于c - 运行时检查失败 #2 - 变量 'arr2' 周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870208/

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