Вылет при использовании динамической памяти - 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])
- }
Объяснение кода листинга программы
- Объявляются переменные
a
,b
,i
,j
типа int - С помощью функции scanf() вводится значение для переменных
a
иb
и сохраняется в соответствующих переменных - Создается массив
mx
динамического размераa
на основе переменнойb
с помощью оператора new - В цикле for, который выполняется
a
раз, в цикле for, который выполняетсяb
раз, считывается значение в массивmx
с помощью функции scanf() - Поскольку ввод данных осуществляется с помощью функции scanf(), то предполагается, что пользователь вводит данные, и программа ожидает ввода данных в соответствии с размером массива
mx
- Если пользователь вводит данные, которые не соответствуют размеру массива
mx
, то программа может выдать неопределенное поведение или вызвать ошибку - Если пользователь вводит данные, которые превышают размер массива
mx
, то программа может выдать неопределенное поведение или вызвать ошибку - Если массив
mx
не был удален с помощью оператора delete, то будет утечка памяти
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д