我在合并排序中传递此数组的方式有什么问题

What is wrong with the way I pass this array in my mergesort?

本文关键字:数组 方式 问题 什么 合并 排序      更新时间:2023-10-16

我在尝试对我传递的数组执行任何操作时遇到段错误。很可能我正在犯一些简单的愚蠢错误,但我没有看到它。

合并调用:

merge(&(array[size]), 0, size-1);

合并

void merge(people* pe,int low,int high)
{   //cout<< pe[0].fname << endl;  
    if(low < high)
    {   int mid = (low+high)/2;
        merge(pe, low, mid);
        merge(pe, mid+1, high);
        mymerge(pe, low, mid, high);
    }
}

进入那个cout,看看我是否可以访问那里的数组,我立即在那里得到一个段错误。我在那里做错了什么?(我可以 cout array[0].fname,所以结构数组本身没有问题)

如果您以明显的方式命名了变量,那么(除了祝贺您这样做之外),&(array[size])可能会返回指向超出array边界的 1 的指针。

取消引用该指针会给你未定义的行为,因为你不拥有那个记忆。

我想你的意思是通过&(array[0]),或者只是array.