Próbuję rozwiązać zadanie z uczelni po wysłaniu kodu sprawdzarka sprawdza kolejne testy chyba że się na którymś wywali. Metodą komentowania i wysyłania doszedłem do momentu, że wiem jaka dokładnie linijka wywala mi program, jednak wydaje mi się ona w porządku. Tu kod:
typedef struct node Node;
struct node{
Node *g[3];
long val;
int vis;
};
Node *create(long val){
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->val = val;
for(int i = 0; i<3; i++)
newNode->g[i] = NULL;
newNode->vis = 0;
return newNode;
}
#define N 100000
Node * poziom[N]; /// globalna tablica
----------- w jakiejs funkcji:
poziom[i] = create(10); /// cos tego typu mam w pewnej funkcji, do poziom odwoluje sie tylko w tym jednym miejscu nigdzie indziej (bo wszystko wykomentowalem)
i okazuje się że jak zakomentuję poziom[i] = create(10); to program się nie wywala (oczywiście daje złą odpowiedź ale przechodzi przez wszystkie testy). Sprawdziłem też że malloc zawszy przydziela pamięć (nigdy nie zwraca NULLa, bo gdyby zwrócił to kończyłby się program i błędu by nie było). Nie wychodzi tez poza tablicę poziom, ale też się nie zapętla. Powód musi być jakiś inny. Jakieś pomysły?
Edit:
Jeszcze lepiej, zobaczcie na to: (niesamowite jest co tu się dzieje)
typedef struct node Node;
struct node{
Node *g[3];
long val;
int vis;
};
Node *create(long val){
return NULL;
}
#define N 100000
Node * poziom[N]; /// globalna tablica
----------- w jakiejs funkcji:
poziom[i] = create(10); /// to wywala blad
jak zamienie na to to nie ma bledu:
create(10);
I jeszcze raz powtórzę, że mam pewność że nie wychodzi za tablicę