C++ 在数组上使用delete[]时堆损坏

C++ 在数组上使用delete[]时堆损坏,c++,memory-management,heap,C++,Memory Management,Heap,这是我的代码: int* mergeArrays(int* a, int m, int* b, int n) { int *c; c = new int(m + n); int i, j; for (i = 0; i < m + n; i++) c[i] = 0; for (i = 0; i < m; i++) c[i] = a[i]; cout << i; for (j = 0; j

这是我的代码:

int* mergeArrays(int* a, int m, int* b, int n)
{
    int *c;
    c = new int(m + n);
    int i, j;
    for (i = 0; i < m + n; i++)
        c[i] = 0;
    for (i = 0; i < m; i++)
        c[i] = a[i];
    cout << i;
    for (j = 0; j < n; j++)
    {
        c[i] = b[j];
        i++;
    }
    for (i = 0; i < m + n - 1; i++)
        for (j = i + 1; j < m + n; j++)
            if (c[i] > c[j])
                swap(c[i], c[j]);
    return c;
}
在主菜单中使用delete[]a时出现错误 有人知道怎么解决这个问题吗

c = new int(m + n);
这将分配一个指向一个int的指针,并将其值初始化为m+n

你想要的是:

c = new int[m + n];