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)))
2021.11.2814:49:29.354 test (EURUSD,H4) Test
2021.11.2814:49:29.354 test (EURUSD,H4) text
2021.11.2814:49:29.354 test (EURUSD,H4) Test text | 82021.11.2814:49:29.354 test (EURUSD,H4) Test text
2021.11.2814:49:29.354 test (EURUSD,H4) -------------------------
2021.11.2814:49:29.354 test (EURUSD,H4) | 02021.11.2814:49:29.354 test (EURUSD,H4) Test text
È 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.
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)
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
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)