"Ошибка шины (образ памяти сброшен на диск)" при запуске кода на c++

Честно я плохо разбираюсь в c++, знаю его примерно на олимпиадном уровне и каких-то тонкостей c++ не знаю. Пытаюсь решить задачу, написал такой вот код:

#include <iostream>
#include <string>

using namespace std;

int main() {
    int n,m;
        string sosedi1[n][m];
        string sosedi2[n][m];
        int t;
    cin >> n >> m;
        for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; i++) {
                        cin >> t;
                }
        }

        for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                        cin >> sosedi1[i][j];
                }
        }
    int a,b;
        cin >> a >> b;
        for (int i = 0; i < a; i++) {
                for (int j = 0; j < b; j++) {
                        cin >> sosedi2[i][j];
                }
        }
    int result = 0;
        for (int i = 0; i < a; i++) {
                for (int j = 0; j < b; j++) {
                        if (sosedi2[i] == sosedi1[i]) {
                                continue;
                        } else {
                                result++;
                        }
                }
        }
    cout << result;
}

Компиляция не выдает ошибок, а вот при запуске кода пишет:

Ошибка шины (образ памяти сброшен на диск)

Использую fedora 42 и компилятор g++


Ответы (1 шт):

Автор решения: Harry

Этого

int n,m;
string sosedi1[n][m];
string sosedi2[n][m];

уже достаточно. Какую память должен выделить компилятор, если значения n и m во время компиляции неизвестны?

Ох уж это нестандартное расширение g++, позволяющее писать такие ужасы... :(

→ Ссылка