Mam pytanie odnosnie alkoacji pamieci w C++.
Podaczas pisania prostego kodu:
Kod:
//....
//wczytuje macierz c
//wczytuje macierz TT
double *C = new double [wiersze*wiersze*wiersze*wiersze];
int N =2;
for (int i = 0; i < N; i++)
for (int p = 0; p < N; p++)
for (int qrs = 0; qrs < 8; qrs++){
C[i*N+qrs] += c[i*N+p]*TT[p*N+qrs];
}
double *D = new double [wiersze*wiersze];
for (int i = 0; i < N; i++)
for (int j= 0; j< N; j++){
D[i*N+j]=2.0;
}
delete [] C;
delete [] c;
delete [] TT;
delete [] D;
W takim przypadku po uruchomieniu programu dostaje nastepujacy komunikat:
Kod:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
Czy blad ten wynika z faktu, ze pobieram zbyt duza ilosc pamieci?
W kolejnych krokach bede potrzebowala macierz C, ktora jest bardzo duza i nie moge od razu jej zwolnic.