У меня есть следующий код:
int **a = new int*[n+1];
for(int i = 0; i <= n; i++) a[i] = new int[1];
Теперь - насколько я понимаю - первый оператор выделяет память для n + 1 указателей int, в l oop, для каждого из этих указателей int там Выделена память 1 * sizeof (int) (a [i] - указатель на первое int).
Если я выведу массив в 2 цикла от i = 0 до n, это не приведет к ошибке сегментации :
for(int i = 0; i <= n; i++) {
for(int j = 0; j <= n; j++)
printf("%d ",a[i][j]);
printf("\n");
}
Почему я могу получить доступ к [i] [j], где j> 0, поскольку я выделил память только для одного int, не получая ошибки сегментации?