Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 596
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Tutto a posto. Lasciate che li cancelli in OnDeinit(). Ma ora ho un errore di esaurimento della memoria che spunta già durante i test... Cioè, non arriverà a OnDeinit().
Quindi creerete un mucchio di oggetti doppi. Poi tutto andrà in malora e non riuscirete a trovarne la fine.
Così si crea un mucchio di oggetti duplicati. Allora il tutto andrà perso e non riuscirete a trovarne la fine.
Come faccio a sapere esattamente dove non sto cancellando gli oggetti? È un grande programma :)
Come faccio a sapere esattamente dove non sto cancellando gli oggetti? È un grande programma :)
Dovresti prima scoprire dove e come hai creato un tale mucchio. Se la memoria non mi inganna, ne avete, quanto, diecimila? Cosa sono? Sono oggetti di dati storici? O che tipo di oggetti ne hanno così tanti? Un array di oggetti - di cosa?
Dovresti prima scoprire dove e come hai fatto un tale mucchio. Se la memoria non mi inganna, ne avete decine di migliaia lì, vero? Cosa sono? Oggetti di dati storici? O che tipo di oggetti ne hanno così tanti? Un array di oggetti - di cosa?
Ah, c'è un sacco di roba lì dentro. Soprattutto tipi di candele e regole. È complicato ))
Come faccio a sapere esattamente dove non sto cancellando gli oggetti? È un grande programma :)
Non si crea un nuovo oggetto ad ogni tick. Naturalmente è possibile (ma non sempre ragionevole secondo me), ma deve essere più ragionevole sgonfiare l'oggetto immediatamente dopo aver finito di lavorarci. Questa è l'unica spiegazione che mi viene in mente.
Ah, c'è un sacco di roba lì dentro. Soprattutto tipi di candele e regole. È complicato ))
È complicato per alcuni e non per altri. Ma ora tocca a voi risolvere la situazione.
Un consiglio. Iniziare da zero. Aggiungete gradualmente gli oggetti necessari al codice e vedete cosa succede nell'output - se quando cambiate il TF o dopo aver ricompilato otterrete un messaggio nel log riguardo agli oggetti non rimossi e alle perdite di memoria, allora sistematelo. Avanti - aggiungete di nuovo la funzionalità con il controllo della corretta conservazione, dell'uso e della cancellazione di tutti gli oggetti. Dovete cancellarli voi stessi se li create con new.
Non si crea un nuovo oggetto ad ogni tick, vero? È possibile (ma non sempre ragionevole secondo me), ma è probabilmente più ragionevole sgonfiare l'oggetto non appena si finisce di lavorarci. Questa è l'unica spiegazione che mi viene in mente.
Su ogni candela.
Su ogni candela.
Beh, se non hai bisogno degli oggetti precedenti, vale la pena rimuoverli subito.
Beh, se non hai bisogno degli oggetti precedenti, dovresti cancellarli subito.
Sì, questo è il punto. È così confuso, gli oggetti sono in altri oggetti e non è già così facile da cancellare. Alcuni oggetti dipendono da altri, e quelli da terzi oggetti che dipendono dai primi :)
La vita è così complicata :(
Sì, questo è il punto. È così confuso, gli oggetti sono in altri oggetti e non è così facile da cancellare già. Alcuni oggetti dipendono da altri, e quelli da terzi oggetti che dipendono dai primi :)
La vita è così complicata :(
Avete confuso tutto. Un'errata pianificazione del compito è esattamente ciò che porta a tali conseguenze.
Se vengono creati oggetti in una classe, la classe deve cancellarli nel suo distruttore quando finisce. Altre classi devono controllare se l'oggetto è valido prima di ottenere un puntatore ad esso. E in linea di principio non dovrebbe esserci una relazione così intrecciata. È un po' un groviglio. Complicato non significa qualità. Tutto dovrebbe essere trasparente e tracciabile. Prima di tutto, per voi.