Объединить 2 отсортированных массива в C

Я пишу код для объединения 2 отсортированных массивов код ниже

void main()
{
int a[]={7};
int b[] = {8};
int ret;
int *c;
merge(a,b,c,1,1);
}
void merge(int *a, int *b,int *sorted, int i, int j)
{
int c1,c2,k=0;
c1=0;
c2=0;

for(k=0;c1<i && c2< j;k++)
{
if(a[c1]<b[c2])
sorted[k]=a[c1++];
else
sorted[k]=b[c2++];
}
while(c1<i)
sorted[k++]=a[c1++];
while(c2<j)
sorted[k++]=b[j++];
}

При запуске этого кода программа останавливается и я получаю следующее исключение

Problem Event Name: APPCRASH
Application Name: merge.exe
Application Version:  0.0.0.0
Application Timestamp:    556fb91c
Fault Module Name:    merge.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp:   556fb91c
Exception Code:   c0000005
Exception Offset: 00001739
OS Version:   6.1.7601.2.1.0.768.3
Locale ID:    2057
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Как это исправить

0

Решение

Проблема в том, что вы не предоставили места для размещения объединенной информации. Вы указали неинициализированный указатель c для sorted параметр, который разыменовывается внутри функции, вызывая неопределенное поведение.

Чтобы это исправить, передайте массив с достаточной емкостью для хранения элементов объединенного массива:

int a[]={7, 15, 20};
int b[] = {8, 12, 19, 32};
int c[7];
merge(a, b, c, 3, 4);
7

Другие решения