> So I have a program for which is is necessary for me to have many (7) large arrays (order of 8000x8000) of the type long double
Long double is 10 bytes IIRC
10 * 8000 * 8000 * 7 = 4480000000
That's 4.8GB, which is well past ALL the memory you could ever have on a 32-bit system.

> r = malloc(sizeof(long double)*NUM_PARTICLES);
Also, this should be (note, sizeof a pointer, not a long double).
r = malloc(sizeof(long double*)*NUM_PARTICLES);