Errores, fallos, preguntas - página 507

 
sergey1294:
Una operación no tiene hora de cierre porque una operación es una transacción y tiene un tiempo de ejecución HistoryDealGetInteger(ticket,DEAL_TIME).Si una operación ha provocado el cierre de una posición, ésta será la hora de cierre. Pero es extraño que la función PositionGetInteger tenga el identificador POSITION_TIME - tiempo de apertura de la posición, pero no tenga la verificación de cierre de la posición.
No hay nada extraño desde el punto de vista de la red. La hora de apertura es la hora del primer comercio, y Dios sabe lo que pasa después...
 

Hola, estoy descargando el historial de todos los instrumentos (más de 600, servidor BroCo-Demo), alrededor del carácter 300 el terminal escribe:

NI 0 Scripts 12:19:11 script Download_history (EURUSD,H1) cargado con éxito
MJ 3 MemoryException 12:24:20 31703040 bytes no disponibles
EE 3 MemoryException 12:24:20 31703040 bytes no disponibles
NM 3 MemoryException 12:24:21 31703040 bytes no disponibles
HD 3 MemoryException 12:25:15 245760 bytes no disponibles
LL 3 MemoryException 12:25:15 245760 bytes no disponibles
PG 3 MemoryException 12:25:15 245760 bytes no disponibles

DN 3 MemoryException 12:25:15 245760 bytes no disponibles

He descargado el historial utilizando el script descrito en la sección "Organizar el acceso a los datos" (lo he cambiado un poco - de otra manera sólo funcionaba para las monedas) Adjunto el código del script

Archivos adjuntos:
 

¿Puede decirme si, por ejemplo, tenemos un :

Clase cClass()

{

Público:

cClass2 *puntero;

void fn() { puntero = new cClass2; }

~Clase()

{

borrar(puntero);// ¿es necesaria esta línea aquí???

}

}

OnTick()

{

{

cClase var;

} // Aquí la memoria asignada dinámicamente se liberará sin borrar?

}

Es decir, cuando se destruye la clase, ¿se libera la memoria asignada dinámicamente dentro de la clase?

 
220Volt:

Me puedes dar una pista, por ejemplo tenemos un :

Tengo un destructor que tiene más o menos el mismo diseño y funciona. Lo único es que hay que comprobar la invalidez del descriptor (o mejor dicho, su ausencia) antes de acceder a él.

También está el artículo de Roche sobre el uso de punteros, hay mucho que mirar.

 

Tengo una clase que funciona con un array dinámico, sin borrar en el destructor, sin errores, pero estoy dudando.

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

Tengo una clase que trabaja con un array dinámico, no hay retrasos en el destructor, no se generan errores,

Así, la memoria ocupada por el objeto no se libera.

Cuando experimenté con esto, tenía mensajes en el registro después de cerrar el programa sobre la no liberación de memoria (o algo así).

Y el estándar Achtung:

Un objeto creado con el operador new debe ser destruido explícitamente con el operador delete.

 

Ya entendí por qué dudaba, los arrays no se pueden borrar vía delete, por eso no los borré. He estado trasteando en C, por eso me empezaron a venir a la cabeza todo tipo de tonterías.

 
220Volt:

Ya entendí por qué dudaba, los arrays no se pueden borrar vía delete, por eso no los borré. He estado trasteando en C, por eso me empezaron a venir a la cabeza todo tipo de tonterías.

Ejem. Pensé que con"arrays dinámicos" te referías a "objetos dinámicos" y sus descriptores asociados. A juzgar por el comienzo del hilo sobre las clases y los descriptores.
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 

Culpa mía :(

Gracias.

 
220Volt:

Culpa mía :(

Graciascf