Вылет при использовании динамической памяти - 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, то будет утечка памяти
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д