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

合并通话:

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);
    }
}


我输入该指令以查看是否可以访问该阵列,然后立即在该段中找到段错误。我在那里做错了什么? (我可以删除array [0] .fname,所以结构数组本身没有问题)

最佳答案

如果您以明显的方式命名了变量,则(除了为此祝贺之外),&(array[size])可能会返回一个指针,该指针指向array之外的1。

取消引用该指针将给您未定义的行为,因为您不拥有该内存。

我认为您的意思是通过&(array[0])或仅通过array

关于c++ - 我在mergesort中传递此数组的方式有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27419313/

10-12 20:46