微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助查找分段错误错误

如何解决需要帮助查找分段错误错误

谁能帮我找出导致程序中分段错误的原因,我使用了 gdb,但我找不到导致错误的那一行。

    Array* Merge(Array *arr1,Array *arr2)
{
    int i,j,k;
    i=j=k=0;
    Array *arr3 = (Array*)malloc(sizeof(Array));
    arr3->size = arr1->size + arr2->size;
    arr3->length = arr1->length + arr2->length;
    while(i<arr1->length && j<arr2->length)
    {
        if(arr1->A[i] < arr2->A[j])
            arr3->A[k++]=arr1->A[i++];
        else
            arr3->A[k++]=arr2->A[j++];
    }
    for(;i<arr1->length;i++)
        arr3->A[k++]=arr1->A[i];
    for(;j<arr2->length;j++)
        arr3->A[k++]=arr2->A[j];
    return arr3;
}



 #include <stdio.h>
#include <stdlib.h>
#include "array1.h"
int main()
{
        Array arr,arr1,*arr2;
        arr.size=10;
        arr.length=5;
        arr1.size=10;
        arr1.length=5;
        arr.A=(int*)malloc(arr.size*sizeof(int));
    arr1.A=(int*)malloc(arr.size*sizeof(int));
        printf("\n enter elements of arr\n");
        for (int i=0;i<arr.length;i++)
            scanf("%d",&arr.A[i]);
    /**********************************************/
        printf("\n enter elements of arr1\n");
        for (int i=0;i<arr1.length;i++)
            scanf("%d",&arr1.A[i]);
        arr2=Merge(&arr,&arr1);
        display(*arr2);
    return 0;
}

这是gdb的结果 enter image description here

解决方法

Merge 中,您没有为 arr3 的数据分配任何空间(可能是名为 A 的成员查看其他代码)

查看其余代码(尤其是 Array 的声明)会有所帮助,但我怀疑 arr3->A 是未初始化的指针。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。