Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 217
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
Come faccio ora (b3110) ad azzerare una struttura complessa?
Costruttore con azzeramento.
E se volete azzerare in corso, c'è anche un metodo aggiuntivo per farlo:
Costruttore con azzeramento.
E se volete azzerarlo mentre lavorate, allora metodo aggiuntivo per questo:
Vorrei un metodo universale, come permetteva una volta ZeroMemory.
Considerate che ho cambiato - ora controllo il 1° termine per x[i].i == 0 (prima la condizione era x[i].x == 0.0)
Risultato: falso
E con ZeroMemory - vero.
Grazie, l'ho aggiustato.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Peculiarità di mql5, consigli e trucchi
mktr8591, 2021.08.12 19:43
Ho impostato un limite di attesa. Poi lo cambio manualmente e tramite script e ORDER_TIME_SETUP cambia.
Esempio di cosa cambia.
Registro delle impostazioni.
ORDER_TIME_SETUP è cambiato. Bug?
Vorrei un modo universale, come permetteva una volta ZeroMemory.
E chi rilascerà il buffer in stringa? ZeroMemory è essenzialmente un analogo di questo.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa366920(v=vs.85)
Nessun distruttore sarà chiamato. Corrispondentemente, il puntatore del buffer sarà cancellato nella stringa, mentre il buffer stesso sarà perso. Il lavoro diretto con la memoria è come un campo minato - se si perde la vigilanza, è finita)))
Ecco un esempio di perdita nel vostro caso:
L'oggetto non possiede più un puntatore a un buffer e il buffer stesso "perdeva".
PS. Fanculo non i tipi POD a zero attraverso memset e ZeroMemory
PS. Beh, non è un azzeramento di tipo POD tramite memset e ZeroMemory
Non l'ho testato, ma penso che il buffer delle stringhe venga azzerato.
Non ho controllato, ma credo che il buffer delle stringhe venga resettato.
Perché dovrebbe resettare?)))
È maturo come dovrebbe essere)))
UPD: t1, t2 con il loro output, in modo che il compilatore non ottimizzi troppo il tutto)
UPD2: possono chiamare la cancellazione per il buffer, ma non riesco a capire come farlo in un caso in cui la stringa è dentro la struttura
UPD3: anche se è scritto in aiuto, è chiamato per esso personalmente, quindi dovrebbe liberare il buffer, spero, che con il puntatore alla memoria liberata già leggere i dati.
Perché dovrebbe azzerarsi?)).
Sarebbe bello vedere
Print(GetAddress(a.a));
Prima e dopo.
Sarebbe bello vedere
Prima e dopo.
Come dovrebbe essere. Nel primo caso l'indirizzo di memoria, nel secondo 0
Perché dovrebbe resettare?)))
Tutto qui è maturo, come dovrebbe essere)))
UPD: t1, t2 con il loro output, in modo che il compilatore non ottimizzi troppo il tutto)
UPD2: possono chiamare la cancellazione per il buffer, ma non riesco a capire come farlo in un caso in cui la stringa è dentro la struttura
UPD3: anche se è scritto in aiuto, è chiamato personalmente, significa che il buffer dovrebbe essere liberato, spero che sia già liberata la memoria per puntatore.
In linea di principio, tutto lì dovrebbe essere abbastanza banale nell'implementazione)