Mnożenie dużych macierzy w C++ i błąd konsoli

Witam, zrobiłem program, który mnoży macierze o tych samych wymiarach. Wszystko ładnie chodzi do pewnego rozmiaru macierzy. Podczas wykonywania, np. 1000 na 1000 konsola się zawiesza i program zwraca jakieś liczby. W czym jest błąd?

#include 

#include 

#include 

#include 

#include 

using namespace std;


int main()

{

    const int ile = 1000;


    int tab_1[ile][ile], tab_2[ile][ile], tab_3[ile][ile];

    srand(time(0));



    int licznik = 0;


    for(int i = 0; i
    {


        for(int j = 0; j
        {

            tab_1[i][j] = licznik++;

            tab_2[i][j] = licznik++;

        }

    }


    for(int i = 0; i
    {

        for(int j = 0; j
        {

            tab_3[i][j] = 0;

            for(int k = 0; k
            {

               tab_3[i][j] += tab_1[i][k] * tab_2[k][j];

            }

        }

    }


    getch();

}

Pomyliłem rząd wielkości mają być MB a nie GB :stuck_out_tongue: Więc pierwsze zdanie jest błędne. Int ma maksymalnie ~32tyś a ty chcesz w nim zapisać milion.

Masz za mało wolnego ramu, musisz mieć conajmniej 4GB na każdą tablicę :slight_smile: Pomijając fakt, że int ma maksymalnie ~32tyś a ty chcesz w nim zapisać milion.

Program będzie krzaczyć nawet przy niewiele ponad 10x mniejszej tablicy.

Reasumując, pracujesz na plikach tekstowych na pojedynczych bitach na dysku a nie w pamięci :stuck_out_tongue:

Dzięki za szybką odpowiedź. Tablica działa prawidłowo przy maksymalnie 416 x 416. Byłem ciekawy dlaczego wystąpił taki problem, ponieważ mój nauczyciel twierdził, że uczniowie robili tablice kilka tysięcy x kilka tysięcy.

ehh, rząd mi się pomieszał. Nie wpisuj miliona tylko max 32tyś i będzie ok (lub zmień typ danych)

Słucham? Większość kompilatorów przeznacza na niego 32 bity, czyli ze znakiem to będzie nieco ponad 2 mld.

@OP

Problem leży gdzie indziej. Nie możesz zrobić takiej tablicy na stosie, zaalokuj ją na stercie.

rzeczywiście, z leksza do tyłu z tym jestem :stuck_out_tongue:

I działa! Zdefiniowałem tablice przed funkcją main i macierz może mieć rozmiar 9442x9442