Вылет при использовании динамической памяти - C (СИ)

Узнай цену своей работы

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

Доброго времени суток, у меня возникла проблема с одной задачей: Дана матрица mx[a][b], числа "а" и "ь" - любые целые числа. Вывести матрицу на экран. Вот код, но в чем проблема я определить немогу, т.к. компилятор не ругаеться вообще, а при запуске программы сходу выбивает: "Исключение unknoen software exception(0x00000fd) в приложении по адресу 0x00402853. Подскажите пожалуйста, в чем проблема.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main()
{
    int a,b,i,j,n;
    int **mx[i][j];
    printf("vvedite rozmernost matritsi");
    scanf("%i\n", &a);
    scanf("%i\n", &b);
    n=a*b;
    mx[i][j]=(int**)malloc(n*sizeof(int**));
    for(i=0;i<a;i++)
    {
        for(j=0;j<b;j++)
        {
            mx[i][j]=(i*a)+j+1;
            printf("%i", mx[i][j]);
        }
        printf("\n");
    }
    return 0;
    getch();
}

Решение задачи: «Вылет при использовании динамической памяти»

textual
Листинг программы
int a, b, i, j;
scanf("%d%d", &a, &b);
int mx[a][b];
 
for ( i = 0; i < a; i++)
for (j = 0; j < b; j++)
{
    scanf("%d", &mx[i][j])
}

Объяснение кода листинга программы

  1. Объявляются переменные a, b, i, j типа int
  2. С помощью функции scanf() вводится значение для переменных a и b и сохраняется в соответствующих переменных
  3. Создается массив mx динамического размера a на основе переменной b с помощью оператора new
  4. В цикле for, который выполняется a раз, в цикле for, который выполняется b раз, считывается значение в массив mx с помощью функции scanf()
  5. Поскольку ввод данных осуществляется с помощью функции scanf(), то предполагается, что пользователь вводит данные, и программа ожидает ввода данных в соответствии с размером массива mx
  6. Если пользователь вводит данные, которые не соответствуют размеру массива mx, то программа может выдать неопределенное поведение или вызвать ошибку
  7. Если пользователь вводит данные, которые превышают размер массива mx, то программа может выдать неопределенное поведение или вызвать ошибку
  8. Если массив mx не был удален с помощью оператора delete, то будет утечка памяти

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.5 из 5
Похожие ответы