Evidentemente fallisce l'allocazione statica della memoria (tra l'altro non conforme allo standard ISO c90 che non prevede array a size variabili): un "unsigned long long int" è su 8 byte, e tu stai cercando di allocare array di dimensioni 2^32 e 2^33 - 1, che moltiplicati per 8 danno come risultato
1) 2^35 byte = 32 gibibyte;
2) 2^36 - 1 byte ~= 64 gibibyte;
temo sia un po' troppo... il compilatore non ha modo di accorgersene appunto perché stai usando delle variabili per le dimensioni degli array, ma se le scrivessi esplicitamente come ad esempio così
unsigned long long aa[1000000000];
già "solo" per un mililardo di elementi il mio gcc (4.2.4) dice
error: size of array 'aa' is too large
sei proprio sicura di avere bisogno di tutta questa memoria?