Errori, bug, domande - pagina 507

 
sergey1294:
Una negoziazione non ha tempo di chiusura perché una negoziazione è una transazione e ha un tempo di esecuzione HistoryDealGetInteger(ticket,DEAL_TIME).Se un trade ha causato la chiusura di una posizione, allora questo sarà il tempo di chiusura della posizione. Ma è strano che la funzione PositionGetInteger abbia l'identificatore POSITION_TIME - tempo di apertura della posizione, ma non ha la verifica di chiusura della posizione.
Non c'è niente di strano dal punto di vista delle reti. Il tempo aperto è il tempo del primo scambio, e Dio sa cosa succede dopo...
 

Ciao, sto scaricando la storia di tutti gli strumenti (oltre 600, server BroCo-Demo), intorno al 300° carattere il terminale scrive:

NI 0 Scripts 12:19:11 script Download_history (EURUSD,H1) caricato con successo
MJ 3 MemoryException 12:24:20 31703040 byte non disponibili
EE 3 MemoryException 12:24:20 31703040 byte non disponibili
NM 3 MemoryException 12:24:21 31703040 byte non disponibili
HD 3 MemoryException 12:25:15 245760 byte non disponibili
LL 3 MemoryException 12:25:15 245760 byte non disponibili
PG 3 MemoryException 12:25:15 245760 byte non disponibili

DN 3 MemoryException 12:25:15 245760 byte non disponibili

Ho scaricato la storia usando lo script descritto nella sezione "Organizzare l'accesso ai dati" (l'ho cambiato un po' - in altro modo ha funzionato solo per le valute) Allego il codice dello script

File:
 

Potete dirmi se, per esempio, abbiamo un :

Classe cClass()

{

Pubblico:

cClass2 *pointer;

void fn() { pointer = new cClass2; }

~Classe()

{

cancellare(puntatore);// questa linea è necessaria qui???

}

}

OnTick()

{

{

cClass var;

} // Qui la memoria allocata dinamicamente verrà liberata senza cancellare?

}

Cioè, quando la classe viene distrutta, la memoria allocata dinamicamente all'interno della classe viene liberata?

 
220Volt:

Potete darmi un suggerimento, per esempio abbiamo un :

Ho un distruttore che ha più o meno lo stesso layout e funziona. L'unica cosa è che dobbiamo controllare che il descrittore non sia invalido (o meglio, che non lo sia) prima di accedervi.

C'è anche l'articolo di Roche sull'uso dei puntatori, c'è molto da guardare.

 

Ho una classe che funziona con un array dinamico, nessuna cancellazione nel distruttore, nessun errore, ma sono titubante.

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
220Volt:

Ho una classe che funziona con un array dinamico, nessuna cancellazione nel distruttore, non vengono generati errori,

Quindi la memoria occupata dall'oggetto non viene liberata.

Quando ho sperimentato questo, avevo dei messaggi nel log dopo aver chiuso il programma riguardo al fatto che non si liberava la memoria (o qualcosa del genere).

E lo standard Achtung:

Un oggetto creato con l'operatore new deve essere esplicitamente distrutto con l'operatore delete.

 

Ho capito perché ero esitante, gli array non possono essere cancellati tramite delete, ecco perché non li ho cancellati. Ho fatto un po' di casino in C, ecco perché ogni sorta di assurdità ha iniziato a venirmi in mente.

 
220Volt:

Ho capito perché ero esitante, gli array non possono essere cancellati tramite delete, ecco perché non li ho cancellati. Ho fatto un po' di casino in C, ecco perché ogni sorta di assurdità ha iniziato a venirmi in mente.

Pensavo che quando si parlava di"array dinamici" si intendesse "oggetti dinamici" e descrittori associati ad essi. A giudicare dall'inizio del thread su classi e descrittori.
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 

Colpa mia :(

Grazie.

 
220Volt:

Colpa mia :(

Graziecf