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?