Cześć,
mam intrygujący problem z tablicami. W programie korzystam z kilku tablic jedno i dwuwymiarowych o wymiarach 2^N. Program działa poprawnie dla N<10, powyżej tej wartości pojawia się "Naruszenie ochrony pamięci" przy wywołaniu. Ponieważ przeczytałem, że spowodowane to jest np. odwoływaniem się do pamięci poza zakresem, "zakomentowywałem" kolejno poszczególne części programu, aż do absurdalnej postaci:
#include <iostream>
#include <math.h>
using std::cout;
using std::cin;
//tu wszystko zakomentowane
int main()
{
float Ham[1024][1024], v[1024][1024], d[1024];
int Hamil[1024][2];
//inicjalizacja Hama
for (int i=0; i<1024; i++)
{
for (int j=0; j<1024; j++)
{
Ham[i][j]=0;
}
}
/*
wszystko zakomentowane
*/
return 0;
}
Brakuje mi pomysłu, co może być źle. Robiąc dokładnie taki kod w nowym pliku i kompilując, błąd się nie pojawia. Tutaj, odkomentowując dowolny fragment kodu za deklaracjami tablic, pojawia się naruszenie.
Program sprawdzałem na trzech komputerach pod linuksem openSuse i Ubuntu, wszędzie to samo... kompiluję za pomocą g++.