Ricorsione in C

di Anonimizzato14727 il
7 risposte
Salve,
ho un problema con le funzioni ricorsive.
Dovrei, nel caso base della ricorsione, salvare un vettore (che cambia nella funzione ricorsiva) in una riga di una matrice. Avevo pensato di dichiarare in modo globale un contatore che mi indichi la riga corrente su cui salvare e quindi di fare la memorizzazione nel caso base della ricorsione e poi incrementare il contatore.
Così facendo però ricevo in fase di compilazione un sacco di errori del tipo " relocation truncated to fit..".
Quale potrebbe essre il problema?
Grazie.

7 Risposte

  • "relocation truncated to fit" dovrebbe avere a che fare con la dimensione delle aree dati/codice all'interno del tuo eseguibile: non è che hai definito staticamente una matrice estremamente grande?
  • Si, l'ho fatto, potrebbe essere quello il problema.
    Grazie.
  • Beh, sì ... quanto grande?
  • Ho messo come numero di righe della matrice un numero esagerato (2 miliardi) perchè non so a priori quanti saranno i vettori che dovrò memorizzare.
  • Beh, è ovvio che non puoi ... se fossero interi a 4 byte l'array (e quindi il file eseguibile) occuperebbe da solo 8 GB !!

    Non credo tu abbia studiato "l'allocazione dinamica" degli array altrimenti non avresti fatto questo errore. Quando non sai quanto grande può essere l'array utilizzi funzioni apposite (come malloc) per gestire la memoria a runtime.
  • Si non so cosa sia l'allocazione dinamica, la studierò, grazie.
  • Di nulla
Devi accedere o registrarti per scrivere nel forum
7 risposte