小编Mat*_*ens的帖子

重新分配函数后的分段错误

我已经创建了这个代码来测试一个错误,我在主代码中得到了它,并且它共享同样的问题.我总是得到分段错误或损坏的数据(零或奇数).

这是代码:

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;
}  
Run Code Online (Sandbox Code Playgroud)

我正在获得分段错误*point[1]=777;.如果我试图这样做,point[1]=777;我会得到错误的数据.随着任何变化int func (int **point);func(&p);我正在进行分段故障realloc.

请指教,我已阅读有关双指针的信息,并试图按照我找到的所有解决方案,但每次我收到此错误.

c pointers realloc double-pointer

2
推荐指数
1
解决办法
381
查看次数

标签 统计

c ×1

double-pointer ×1

pointers ×1

realloc ×1