尝试对传递的数组执行任何操作时,出现段错误。我可能在犯一些简单的愚蠢错误,但我看不到它。
合并通话:
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/