【发布时间】:2017-12-13 02:14:03
【问题描述】:
我创建了这段代码来测试我在主代码中遇到的一个错误,它也存在同样的问题。我总是遇到分段错误或损坏的数据(零或奇怪的数字)。
代码如下:
int *p=NULL;
int func (int **point);
int main() {
int num = 5647;
p = malloc(sizeof(int)*2);
p[0] = num;
p[1]= 657;
printf("%d\n", p[0]);
printf("%d\n", p[1]);
func(&p);
printf("%d\n", p[0]);
printf("%d\n", p[1]);
printf("%d\n", p[2]);
printf("%d\n", p[3]);
return 0;
}
int func (int **point){
*point = realloc(*point,sizeof(int)*4);
if (*point==NULL){
printf("\n abort \n");
exit(0);
}
*point[0] = 867;
*point[1]= 777;
*point[2] = 67;
*point[3]= 77;
}
我在*point[1]=777; 上遇到了分段错误。如果我想像point[1]=777; 那样做,我会得到错误的数据。随着int func (int **point); 或func(&p); 的任何更改,我在realloc 上遇到分段错误。
请告知,我已阅读有关双指针的信息并尝试遵循我找到的所有解决方案,但每次我都收到此错误。
【问题讨论】:
标签: c pointers realloc double-pointer