_
Na ja, was soll denn überhaupt LREDP sein? Du deklarierst diese Variable als int (also nicht als Zeiger), weist ihr dann aber die Rückgabe von malloc/realloc (also eine Adresse!) zu. Und dann wiederum benutzt du sie als Index für LRED. Das kann ja nur schiefgehen.
int LREDP=0;
...
LREDP=malloc... //hier wird eine Speicheradresse zugewiesen, z.B. 0x12345678
...
strncpy_s(LRED[LREDP], 512, lineBuffer, _TRUNCATE); //hier schreibst du jetzt an die Stelle LRED[0x12345678]
Nicht ganz, was du willst, oder? Lass bei LREDP einfach mal den ganzen malloc-Quatsch weg, dann wird die Variable mit 0 initialisiert und später in der Schleife inkremeniert, was du vermutlich eher willst (oder?).