c ++ / error :: exc_bad_access错误代码= 1

时间:2014-09-10 01:18:19

标签: c++ pointers runtime-error exc-bad-access

我在线上获得了exc_bad_access(code = 1,address = 0x0)的运行时错误

asize = **y[0] + **y[1];

在求和函数中。 我知道问题不是内存泄漏,所以我不知道如何解决这个问题。

void allocArr (int **&x, int ***&y, int **&q, int ****&z)
{
    x = new int *[2];
    y = new int **(&*x);
    q = &*x;
    z = new int ***(&q);
}

void summation(int ***&y, int arr[])
{
    int asize = 0;
    asize = **y[0] + **y[1];
    **y[2] = *new int [asize];

    *(arr + 2) = asize;

}

void putArr(int **&x, const int &size1,const int &size2)
{
    x[0] = *new int* [size1];

    x[1] = *new int* [size2];

}
int main()
{
    int size1, size2;
    int a = 1, b = 2;

    int** x;
    int*** y;
    int** q;
    int**** z;

    int arr[2];

    allocArr(x, y, q, z);
    Input(x, arr, size1, size2, a, b);
    summation(y, arr);
    display(z);


}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

三件事。 1.)y的函数参数是int * & 。您是否在其他地方使用括号运算符重载int?如指定的那样,int指针不应该有[]。 2.)括号运算符的优先级高于解除引用运算符。 (将它们括在括号内几乎总是一个好主意)。这样写的方式,括号操作符将在deref之前执行。 3.)你应该需要这么多的解引用运算符似乎很不寻常。他们真的有必要吗?