我在尝试对我传递的数组做任何事情时都会遇到段错误。我可能会做一些简单的愚蠢错误,但我没有看到它。
合并通话:
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,这样结构数组就没有问题了)
答案 0 :(得分:5)
如果你以明显的方式命名变量,那么(除了祝贺你这样做)&(array[size])
可能会返回超出array
范围的指针1。
取消引用该指针将为您提供未定义的行为,因为您没有该内存,。
我认为您的意思是传递&(array[0])
,或只传递array
。