Организация динамического двухмерного массива. Порядок распределения памяти - C (СИ)

Формулировка задачи:

Итак, софорумцы, здравствуйте. Как всегда, преподавателя ещё нет, а я не знаю прав я или нет. Задача. Требуется организовать двухмерный массив. Мой порядок действий. 1. Вначале объявляется указатель на указатель 2. После мы резервируем память на указатель, в нашем случае массив указателей. В зависимости от количество выделенной памяти. 3. Каждым указателем массива указываем на необходимое кол-во памяти для столбцов массива 4. Заполняем массив. Фрагмент кода:
int **array;// указатель на указатели
   int i, j, n;
   printf("Введите кол-во строк квадратной целочисленной матрицы A:");
   scanf("%d",&n);// кол-во элементов указателей в массиве
   array=(int**)malloc(n*sizeof(int));//выделяем место для массива указателей
   for(i=0;i<n;i++)
    {
    array[i]=(int*)malloc(n*sizeof(int));// выделяем место для столбцов при каждой итерации
    for(j=0;j<n;j++){
        printf("[%d][%d]=",i,j);
        scanf( "%d", &array[i][j]);
     }}
Ещё один вопрос. Я как-то решил наглядно проверить распределение динамической памяти. Решил указать на место меньшего размера, чем требуется. Фрагмент кода:
int *array;
    int i,n=9,k=1;
    array=(int*)malloc(k*sizeof(int));
    for(i=0;i<n;i++)
        {
    printf("[%d]=",i);
        scanf("%d",array+i);
В данном случае ошибка памяти вылетает только на 9-ом элемента. На 8 всё норм, хотя наглядно видно, что я выделяю всего 2 байта. Такой вывод. Система резервирует сама какую-то часть памяти без ведома программиста?

Код к задаче: «Организация динамического двухмерного массива. Порядок распределения памяти - C (СИ)»

textual
        int sum1=0, k=0, s;
 
        for(i=1;i<n-1;i++)
            {
            s=i;
          while(s!=(k-1))
            {
          sum1+=abs(array[i][k]);
         i-=1;
         k+=1;
          }
 
            k=0;
         printf("%d\n",sum1);
         sum1=0;
         }

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

6   голосов, оценка 3.667 из 5


СОХРАНИТЬ ССЫЛКУ