Попробуйте переместить некоторые данные в кучу C6262
Начинаю программировать на C в VS. Только знакомлюсь с массивами, поэтому возникла проблема. Суть программы при помощи функций заполнить массивы и отнять их друг от друга.
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <conio.h>
void zapolnenie(int Ar[50][50], int n, int m)
{
int a, b;
printf("\nЗаполните матрицу\n");
for (a = 0; a < n; a++) for (b = 0; b < m; b++) scanf_s("%d", &Ar[a][b]);
}
void raznica(int C[50][50], int K[50][50], int L[50][50], int n, int m)
{
int a, b;
printf("\n\n\nC=A-B\n\n");
for (a = 1; a < n; a++) for (b = 0; b < m; b++) C[a][b] = (K[a][b]) - (L[a][b]);
}
void vivod(int C[50][50], int n, int m)
{
int a, b;
for (a = 0; a < n; a++)
{
for (b = 0; b < m; b++) printf("%d ", C[a][b]);
printf("\n");
}
}
int main()
{
setlocale(LC_ALL, "Rus");
int n, m, a = 0, b = 0;
int A[50][50], B[50][50], C[50][50];
printf("\nВведите размерность двох матриц nxm\n");
scanf_s("%d%d", &n, &m);
zapolnenie(A, n, m);
zapolnenie(B, n, m);
raznica(C, A, B, n, m);
vivod(C, n, m);
}
Выдает это:
C6262 Функция использует "30016" байт в стеке: это превышает значение /analyze:stacksize"16384". Попробуйте переместить некоторые данные в кучу.
+В консоли в первой строке массива выводит такой мусор:

Три дня провел в интернете в поиске решения, но так и не понял как в моем случае должен рабоать стек\указатели\куча. Возможно я неправильно понимаю и существование моей программы впринципе невозможно, но уже не могу найти сил на поиски решения, поэтому прошу у вас помощи, что сделать чтоб программа работала?
Ответы (1 шт):
Анализатор пугает строка
int A[50][50], B[50][50], C[50][50];
которая требует — страшно подумать :) — 30 Кбайт стека. При том, что по умолчанию там 1 МБайт.
Поскольку динамическое выделение памяти — большая отдельная тема, вы можете успокоить анализатор, перенеся строку из функции main за ее пределы:
printf("\n");
}
}
int A[50][50], B[50][50], C[50][50]; // <--- вот сюда
int main()
{
setlocale(LC_ALL, "Rus");
int n, m, a = 0, b = 0;
printf("\nВведите размерность двох матриц nxm\n");
Это вполне устоит анализатор...
Второй способ — с помощью опции командной строки типа /analyze:stacksize64000 (64000 — предлагаемый размер стека) пояснить ему, что стека хватит. Он и не пикнет :)