在数组上使用delete []时堆坏了

时间:2014-09-24 02:48:37

标签: 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 < 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中使用main()时出现

错误 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

c = new int(m + n);

这会分配指向一个 int的指针,并将其值初始化为m + n

你想要的是:

c = new int[m + n];