Convertire variabile in nome

la divisione della rosa dei venti in 16 settori l'avrei interpretata in questo modo, non so se sia corretto ma rende comunque errore di memoria 27994 programmi e 1548 memoria dinamica.
perché questo? cosa gli cambia?

const char* strBussola[16] = {"N ", "Ne", "NE", "En", "E ", "Es",
                              "SE", "Se", "S ", "So", "SO", "Os", "O ", "On", "NO", "No"
                             };
int index;

int trovaIndice(float angolo) {
  int _index;
  for (_index = 0; _index < 16; _index++) {
    float angoloDirezione = _index * 45.0 + 11.25;
    float angoloMin = angoloDirezione - 11.25;
    float angoloMax = angoloDirezione + 11.25;
    if (angolo >= angoloMin && angolo <= angoloMax)
      return _index;

comunque non è poi troppo rilevante sapere se andando a sud est si sia più spostatati verso sud oppure verso est, giusto una prova.