Cosa causa l'errore di stack overflow in mql4? - pagina 3

 
RaptorUK:
Ma può gestire una funzione così grande . . . come ho spiegato, cambia il tipo di funzione e non c'è nessun errore di compilazione per la stessa dimensione della funzione . .


Quindi significa che una funzione int richiede più risorse per essere eseguita? Forse allora i metaquote possono fare init, deinit e start per essere void in modo che consumino meno risorse.
 
RaptorUK:
Ma può gestire una funzione così grande . . . come ho spiegato, cambia il tipo di funzione e non c'è errore di compilazione per la stessa dimensione della funzione . . .

. . . o lasciarlo come un int e lasciare in return(0); e fare questo per tutte le chiamate . . .

   ReturnedValue = ObCreate("EURUSDg",Column1xg,15,ZoomTimes);
   ReturnedValue = ObCreate("EURUSDa",Column1xa,15,ZoomTimes);

. . . dove ReturnedValue è un int. . . indovinate un po'? nessun errore di compilazione.


Fate in modo che il vostro codice abbia un senso . ... ed ecco che, come per magia, l'errore sparisce, strano eh?

 
Una funzione int che restituisce 0 dovrebbe essere paragonabile a una funzione void, quindi questo significa che c'è qualcosa.
 
tonny:

Quindi significa che una funzione int richiede più risorse per essere eseguita? Forse allora i metaquote possono fare init, deinit e start per essere nulli in modo che consumino meno risorse.
Naturalmente unafunzione int ha bisogno di più risorse per essere eseguita...deve restituire un valore e quel valore deve essere memorizzato in memoria per poter essere restituito. Ho visto codice di persone con init, start e deinit dichiarati come void . . . non è qualcosa che faccio.
 
RaptorUK:

. . . o lasciarlo come un int e lasciare in return(0); e fare questo per tutte le chiamate . . .

. . . dove ReturnedValue è un int. . . indovinate un po'? nessun errore di compilazione.


Fate in modo che il vostro codice abbia un senso . . . ed ecco che, come per magia, l'errore sparisce, strano eh?


Anche la funzione int restituisce 0. Comunque problema risolto, ma per quanto riguarda l'errore penso che appaia dove non dovrebbe.
 
tonny:
Una funzione int che restituisce 0 dovrebbe essere paragonabile a una funzione void quindi questo significa che c'è qualcosa.
No, non è così... una funzione void non restituisce un valore... I valori 0, 1, 10000 richiedono tutti lo stesso spazio di memoria da salvare . . . sono tutti di tipo int e un int utilizza 4 byte. void non restituisce nulla, che richiede 0 byte . . .
 
Questo significa che anche con void se dovessimo aggiungere altri oggetti raggiungerebbe il punto di stress e causerebbe di nuovo l'errore. Siamo d'accordo?
 
Prendo il silenzio come un sì. Caso chiuso.
 
tonny:
Questo significa che anche con void se dovessimo aggiungere altri oggetti raggiungerebbe il punto di stress e causerebbe di nuovo l'errore. Siamo d'accordo?
No, non sono d'accordo.

Ma sembra che tu possa avere ragione...
 
RaptorUK:
No, non sono d'accordo.

Ma sembra che tu possa avere ragione...

Ora siamo sulla stessa pagina.
Motivazione: