указатели — c ++ / error :: exc_bad_access код ошибки = 1

Я получаю ошибку во время выполнения exc_bad_access (код = 1, адрес = 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);}

Спасибо вам за помощь.

0

Решение

Три вещи.
1.) Аргументы функции для y являются int *& , Вы перегружали int оператором скобки где-то еще? Как указано, указатель int не должен иметь [].
2.) Скобочные операторы имеют более высокий приоритет, чем оператор разыменования. (Почти всегда хорошая идея заключать их в круглые скобки). Как это написано, оператор скобки будет выполняться до разыменования.
3.) Кажется необычным, что вам нужно так много операторов разыменования. Они действительно необходимы?

0

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


По вопросам рекламы [email protected]