Poldo: Execution killed with signal 11

Ciao ragazzi, quando invio il testo di un esercizio, nei test che fa lui in automatico mi spunta : “Execution killed with signal 11 (could be triggered by violating memory limits)”.

L’errore “Execution killed with signal 11 (could be triggered by violating memory limits)” è spesso dato dall’accesso a una cella di memoria non allocata (Ad esempio quando si lavora con degli array di una certa dimensione e si accede a una cella che supera questo limite (A[10]; printf("%d", A[11]):wink: ad esempio), oppure si supera il limite di memoria del testo spesso difficile dato che ha un limite abbastanza alto per la maggior parte dei problemi (256MiB, 512MiB).

1 Mi Piace

@RayperZ grazie dell’aiuto :blush:. Pero’ anche aumentando la dimesione dell’array, non cambia nulla…
Posso postare il codice e farti vedere il codice dell’esercitazione “Poldo” ?

Posta il codice, viene più semplice capire il problema in questo modo

#include < iostream>
#include < fstream>
using namespace std;

int main()
{
    FILE *input, *output;
    int N,j=1;
    int p, prec;
    input = fopen("input.txt","r");
    output = fopen("ouput.txt","w");
    fscanf(input,"%d\n",&N);
    fscanf(input,"%d",&p);
    prec = p;
    for(int i=1; i<N; i++)
    {
        fscanf(input,"%d",&p);
        if(p<prec) j++;
        prec = p;
    }
    fprintf(output,"%d",j);
    fclose(input);
    fclose(output);
return 0;
}

Quel i<=N ti sta facendo accedere ogni volta a una posizione in più di quelle che hai riempito (quindi stai leggendo un valore “sporco”, che non sai a priori quanto vale).

Non cambia nulla :disappointed_relieved:

Non è che forse è perché manca un return 0;?

Anche mettendolo non cambia nulla

In C++ il return 0; nella main è sottinteso, quando manca. In C invece va messo esplicitamente (altrimenti è come fare return numero a caso :sweat_smile:).

OK consultandomi con un paio di esperti (:joy::stuck_out_tongue_closed_eyes:) il problema pare sia l’utilizzo del tipo long int assieme alla specifica di formato %d che vuole invece un int.

Puoi cambiare i long int in int oppure cambiare la specifica da %d a %ld.

anzichè usare funzioni vecchie di stringa di formato usa fstream!!! Sono molto più semplici, comunque tralasciando questo non mi pare che la tua soluzione sia corretta…

La soluzione mi sembra chiaramente sbagliata, ma non mi sembra che ora dovrebbe darti errore di allocazione di memoria (Error 11)