c - 需要帮助来查找分段错误错误
问题描述
有人可以帮我找出程序中导致分段错误的原因吗,我使用了 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 的结果 在 此处输入图像描述
解决方案
在Merge
您没有为arr3
的数据分配任何空间(可能是一个名为A
查看其他代码的成员)
查看其余代码(尤其是 的声明Array
)会有所帮助,但我怀疑arr3->A
是未初始化的指针。
推荐阅读
- javascript - React:编辑 contentEditable div 时如何保持插入符号位置?
- linux - 哪些CPU寄存器是Linux中进程控制块(PCB)的一部分
- python - 无法对三角函数的值进行采样
- java - 在网络浏览器中隐藏 href URL
- javascript - 使用 React-Native 进行蓝牙测试
- arduino - Arduino Modbus RTU 通过串行响应?
- python - 修复解密 fernet 令牌时的无效签名
- android - 为什么我在这段代码中实现了一个工厂,而 Dagger2 不起作用?
- r - 仅当列存在时才适用于数据框列表
- hadoop - 为什么默认的身份验证 Hadoop 是不安全的?