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